Chia sẻ kiến thức IT và đời sống – Sharing IT Knowledge & Life Insights

Hiển thị các bài đăng có nhãn JavaScript. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn JavaScript. Hiển thị tất cả bài đăng

Thứ Tư, 5 tháng 7, 2017

How to parse JSON (infotable) element names via JavaScript

1. Iterating Over a JSON Object

To extract key-value pairs from a JSON Object, you can use the following methods:

Method 1: Using the for...in Loop (ES5 Standard)

The for...in loop iterates over all enumerable properties of an object.

var myJson = {
    "element1": "hello",
    "element2": 12,
    "element3": true,
    "element4": {
        "subelement1": "one",
        "subelement2": 2
    }
};

for (var el in myJson) {
    if (myJson.hasOwnProperty(el)) {
        console.log("Element name: " + el + 
                    ", element value: " + myJson[el] + 
                    ", element type: " + typeof(myJson[el]));
    }
}

Method 2: Using Object.keys() (ES5)

Returns an array of a given object's own property names, which can then be iterated using a standard loop.

var keys = Object.keys(myJson);

for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    var value = myJson[key];
    console.log("Key: " + key + ", Value: " + value);
}

2. Iterating Over a JSON Array

When working with JSON Arrays, you can use several looping mechanisms depending on your environment:

Method 1: Standard for Loop

The classic, highly performant loop that works across all JavaScript engines.

var propertiesPort = ['port1', 'port2', 'port3', 'port4', 'port5', 'port6', 'port7', 'port8', 'port9', 'port10', 'port11', 'port12'];

for (var i = 0; i < propertiesPort.length; i++) {
    var portName = propertiesPort[i];
    console.log("Port Name: " + portName);
}

Method 2: Using Array.prototype.forEach() (ES5)

Provides a clean functional style to iterate over array elements.

var propertiesPort = ['port1', 'port2', 'port3', 'port4'];

propertiesPort.forEach(function(portName, index) {
    console.log("Index " + index + ": " + portName);
});

Method 3: Using for each...in (PTC ThingWorx / Rhino JS Engine)

In Rhino-based JavaScript engines (commonly used in PTC ThingWorx server-side scripts), the for each...in statement iterates directly over property values rather than keys.

// Iterating through ThingWorx InfoTable rows
for each (row in thingList.rows) {
    // Each row is directly assigned to the 'row' variable
    var thingName = row.name;
    console.log("Thing Name: " + thingName);
}

Reference: ThingWorx

Thứ Năm, 23 tháng 2, 2017

JavaScript căn bản - part 2


1. Phương thức JavaScript Array splice() 


Định nghĩa và Cách sử dụng
Phương thức splice() dùng để thêm/xóa các phần tử vào/khỏi mảng và trả về các phần tử đã bị xóa.
Lưu ý: Phương thức này làm thay đổi mảng gốc.

Cú pháp
array.splice(index, howmany, item1, ....., itemX)

Giá trị tham số

Tham sốMô tả
indexBắt buộc. Một số nguyên chỉ định vị trí để thêm/xóa các phần tử. Sử dụng giá trị âm để chỉ định vị trí tính từ cuối mảng.
howmanyTùy chọn. Số lượng phần tử cần xóa. Nếu được đặt là 0, sẽ không có phần tử nào bị xóa.
item1, ..., itemXTùy chọn. Các phần tử mới được thêm vào mảng.
Giá trị trả về: Một mảng mới chứa các phần tử đã bị xóa (nếu có).

Ví dụ

Tại vị trí 2, thêm các phần tử mới và xóa 1 phần tử:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1, "Lemon", "Kiwi");
=> kết quả = Banana,Orange,Lemon,Kiwi,Mango

Ví dụ

Tại vị trí 2, xóa 2 phần tử:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Kiwi"];
fruits.splice(2, 2);

Ví dụ

Tại vị trí 2, xóa 0 phần tử và thêm 2 phần tử:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "abc" , "Kiwi");
=> kết quả = [Banana,Orange,abc,Kiwi,Apple,Mango]

2. Phương thức valueOf()

<script>
function myFunction() {
    var str = "Hello World!";
    var res = str.valueOf();
    document.getElementById("demo").innerHTML = res;
}
</script>

3. Set và Map

Set:
mySet[Symbol.iterator]

Giá trị trả về

Hàm iterator của đối tượng Set, mặc định là hàm values().

Ví dụ:
vm.fileSetUpload = new Set();
var rmID = $('#btnRemoveSetupFileSrv').val();
vm.fileSetUpload.add(rmID.valueOf());
const iterator1 = vm.fileSetUpload[Symbol.iterator]();
vm.arrRmAttachFile = [];
for (var v of vm.fileSetUpload) {
    vm.arrRmAttachFile.push(v);
}         
Map:
vm.filesMapUpload = new Map();
for (var i = 0; i < e.length; i++) {
    vm.filesMapUpload.set(e[i].name, e[i]);
   
}
var fNames = '';
vm.filesMapUpload.forEach(function(value, key, map) {
    fNames = fNames + key + ":";
});
var rmID = $('#btnRemoveSetupFileCli').val();
vm.filesMapUpload.delete(rmID);
vm.filesArrayUpload = [];
vm.filesMapUpload.forEach(function(value, key, map) {
       vm.filesArrayUpload.push(value);
});

4. Phương thức reduce()

Phương thức reduce() thực thi một hàm reducer (do bạn cung cấp) trên từng phần tử của mảng, tạo ra một giá trị đầu ra duy nhất.

5. Array.prototype.map()

Phương thức map() tạo ra một mảng mới được điền với kết quả từ việc gọi một hàm được cung cấp trên mọi phần tử của mảng gọi nó.


Based on: 

Thứ Tư, 7 tháng 12, 2016

JavaScript căn bản - part 1

1. Javascript là gì?

Javascript là ngôn ngữ lập trình của HTML và Web  chạy trên trình duyệt dưới dạng các script.


Đối tượng Document đại diện cho tài liệu HTML được hiển thị trong cửa sổ đó. Đối tượng Document có nhiều thuộc tính tham chiếu đến các đối tượng khác, cho phép truy cập và sửa đổi nội dung của tài liệu.
Cách thức nội dung tài liệu được truy cập và sửa đổi được gọi là Mô hình Đối tượng Tài liệu (Document Object Model), hay DOM. Các đối tượng được tổ chức theo cấu trúc phân cấp. Cấu trúc phân cấp này áp dụng cho việc sắp xếp các đối tượng trong một tài liệu Web.
  • Đối tượng Window (Window object) − Đứng ở đỉnh của hệ thống phân cấp. Đây là phần tử ngoài cùng trong hệ thống phân cấp đối tượng.
    Đối tượng window đại diện cho một cửa sổ đang mở trong trình duyệt.
  • Đối tượng Document (Document object) − Mỗi tài liệu HTML được tải vào một cửa sổ sẽ trở thành một đối tượng document. Tài liệu này chứa nội dung của trang.
  • Đối tượng Form (Form object) − Mọi thứ nằm bên trong các thẻ <form>...</form> tạo thành đối tượng form.
  • Các phần tử điều khiển form (Form control elements) − Đối tượng form chứa tất cả các phần tử được định nghĩa cho đối tượng đó như trường văn bản, nút bấm, nút radio và hộp kiểm. Chúng có các sự kiện (events), thuộc tính (attributes), kiểu định dạng (styles).
Dưới đây là một hệ thống phân cấp đơn giản gồm một số đối tượng quan trọng -

Closures: Một số link tham khảo về Closures là

2. Tại sao nên học JavaScript? (Why Study JavaScript?)

JavaScript là một trong 3 ngôn ngữ mà mọi lập trình viên web bắt buộc phải học:
   1. HTML để định nghĩa nội dung của các trang web
   2. CSS để chỉ định bố cục của các trang web
   3. JavaScript để lập trình hành vi của các trang web

3. Ví dụ 1: JavaScript có thể thay đổi nội dung HTML

Thuộc tính innerHTML thiết lập hoặc trả về nội dung HTML (inner HTML) của một phần tử.

<!DOCTYPE html>
<html>
<body>
​
<h1>My First JavaScript</h1>
​
<button type="button"
onclick="document.getElementById('demo').innerHTML = Date()">
Click me to display Date and Time.</button>
​
<p id="demo"></p>
​
</body>
</html> 

4. Ví dụ 2: JavaScript có thể thay đổi kiểu CSS

<!DOCTYPE html>
<html>
<body>

<h1>What Can JavaScript Do?</h1>

<p id="demo">JavaScript can change the style of an HTML element.</p>

<button type="button" onclick="document.getElementById('demo').style.fontSize='35px'">Click Me!</button>


</body>

</html> 

5. Ví dụ 3: JavaScript có thể thay đổi các thuộc tính HTML

<!DOCTYPE html>
<html>
<body>

<h1>What Can JavaScript Do?</h1>

<p>JavaScript can change HTML attributes.</p>

<p>In this case JavaScript changes the src (source) attribute of an image.</p>

<button onclick="document.getElementById('myImage').src='pic_bulbon.gif'">Turn on the light</button>

<img id="myImage" src="pic_bulboff.gif" style="width:100px">

<button onclick="document.getElementById('myImage').src='pic_bulboff.gif'">Turn off the light</button>

</body>

</html>
<!DOCTYPE html>
<html>
<body>

<h1>What Can JavaScript Do?</h1>

<p id="demo">JavaScript can hide HTML elements.</p>

<button type="button" onclick="document.getElementById('demo').style.display='none'">Click Me!</button>


</body>

</html> 
Tương tự, để hiển thị phần tử đang ở trạng thái ẩn (hidden) thì đặt style.display='block'

7. Ví dụ 5: JavaScript với sự kiện onchange

<html>
<head>
<script type="text/javascript"> 
function updateInputValue(ishVal){
// ID of current element
var elementID = document.getElementById('CurrentUnitId').value;
document.getElementById(elementID).value = ishVal;
}

function updateTextBox(textboxID) {
//var txtID = document.getElementById(textboxID);
var orgID = document.getElementById('organizationSearchName');
orgID.value = '';
document.getElementById('CurrentUnitId').value = textboxID;
var tempElement = document.createElement("markActionURL");
tempElement.type = "hidden";
tempElement.value = '${actionUrl}';
document.getElementById('CommonTagsTreeChooserUnitID').appendChild(tempElement);
openTreeChooserDialog('organizationSearch','${actionUrl}');

}

function updateInput(ish){
   document.getElementById("fieldname").value = ish;
}

</script>

</head>
<body>
<input type="text" name="fieldname" id="fieldname" />  
<input type="text" name="thingy" onchange="updateInput(this.value)" />
</body>

</html>

this.value là giá trị (value) của phần tử đang được xét.

8. Ví dụ 6: JavaScript chạy trực tiếp một hàm cùng với trang web

Dùng đoạn mã sau nhúng vào phần body của trang html:
<script type="text/javascript">javascript:changeColumnWidthR2();</script>

Khi tải trang web (load trang), trình duyệt sẽ gọi hàm changeColumnWidthR2().

Nội dung của hàm changeColumnWidthR2:
<script type="text/javascript">
function changeColumnWidthR2(){
    $('#ColumnLabelEmployeeName').attr('style','width: 15%');
    $('#ColumnLabelCompany).attr('style','width: 35%');
    $('#ColumnLabelPosition').attr('style','width: 15%');
    $("#Output_Other_Help").html("<font color='red'><center>Click checkbox để chọn organization.</center></font>");
}
</script>


Ngoài ra, có thể gọi những hàm JavaScript mà không cần tới tiền tố javascript:
ví dụ:
<script>
    focusTextboxElement("frmSearch");
    pressSearchButton();

</script>

9. Điều kiện true/false với một biến số

var inputValue = null | undefined | NaN | empty string ("") | 0 | false
if(inputValue)
  alert('false');
else
  alert('true value');
=> trả về giá trị false cho biến số inputValue.

10. Điều này có nghĩa là gì: "undefined object property" (Thuộc tính đối tượng không xác định)?


Thuật ngữ "undefined object property" có nghĩa là gì?
Thực tế, nó có thể mang hai ý nghĩa hoàn toàn khác nhau! Đầu tiên, nó có thể có nghĩa là thuộc tính chưa từng được định nghĩa trong đối tượng, và thứ hai, nó có thể có nghĩa là thuộc tính có giá trị là undefined. Hãy xem đoạn mã sau:

var o = { a: undefined }
Liệu o.a có phải là undefined không? Đúng vậy! Giá trị của nó là undefined. Liệu o.b có phải là undefined không? Chắc chắn rồi! Hoàn toàn không có thuộc tính 'b' nào cả! OK, bây giờ hãy xem các cách tiếp cận khác nhau xử lý ra sao trong cả hai tình huống:

typeof o.a == 'undefined' // true
typeof o.b == 'undefined' // true
o.a === undefined // true
o.b === undefined // true
'a' in o // true
'b' in o // false
Chúng ta có thể thấy rõ rằng typeof obj.prop == 'undefined' và obj.prop === undefined là tương đương nhau, và chúng không phân biệt được hai tình huống khác nhau đó. Trong khi đó, 'prop' in obj có thể phát hiện tình huống khi một thuộc tính hoàn toàn chưa được định nghĩa và không quan tâm đến giá trị của thuộc tính đó (vốn có thể là undefined).

11. JSON - Kiểm tra một biến số nguyên (Integer) có hợp lệ không

if(!(zoneId % 1 === 0)) {
    isZoneIdValid = false;
    result.code = 422;
    result.message = "zoneid = " + zoneId + " khong hop le";
}

if(jsonInput.maxItems >= 0)
    maxItems = jsonInput.maxItems;

12. JSON - Kiểm tra giá trị rỗng (empty) trong javascript

- function isEmpty(value){
    return (typeof value === "undefined" || value === null || value.length === 0 || value === "undefined");
}
- hasOwnProperty
if(jsonInput.hasOwnProperty('maxItems')) {}


PHỔ BIẾN

NHÃN

LƯỢT XEM