Mảng đối tượng có khóa JavaScript

Tóm lược. trong hướng dẫn này, bạn sẽ học cách chuyển đổi một đối tượng thành một mảng bằng cách sử dụng các phương thức của Object

Để chuyển đổi một đối tượng thành một mảng, bạn sử dụng một trong ba phương thức.

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
84,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
85 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
86

Lưu ý rằng phương pháp

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
84 đã có sẵn kể từ ECMAScript 2015 hoặc ES6 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
85 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
86 đã có sẵn kể từ ECMAScript 2017

Giả sử rằng bạn có một đối tượng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
3 như sau

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]

Để chuyển đổi tên thuộc tính của đối tượng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
3 thành một mảng, bạn sử dụng phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
84

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]

đầu ra

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]

Để chuyển đổi các giá trị thuộc tính của đối tượng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
3 thành một mảng, bạn sử dụng phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
85

const propertyValues = Object.values[person]; console.log[propertyValues];

Code language: JavaScript [javascript]

đầu ra

[ 'John', 'Doe' ]

Code language: JSON / JSON with Comments [json]

Để chuyển đổi vô số thuộc tính khóa chuỗi của một đối tượng thành một mảng, bạn sử dụng phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
86. Ví dụ

Tôi đã hai lần được hỏi, ‘Hãy cầu nguyện, ông. Babbage, nếu bạn đưa vào máy những con số sai, liệu câu trả lời đúng có xuất hiện không?’ [. ] Tôi không thể hiểu đúng loại ý tưởng lộn xộn có thể gây ra một câu hỏi như vậy

Charles Babbage, Passages from the Life of a Philosopher [1864]

Số, Booleans và chuỗi là các nguyên tử mà cấu trúc dữ liệu được xây dựng từ. Nhiều loại thông tin yêu cầu nhiều hơn một nguyên tử, mặc dù. Các đối tượng cho phép chúng ta nhóm các giá trị—bao gồm cả các đối tượng khác—để xây dựng các cấu trúc phức tạp hơn

Các chương trình chúng tôi đã xây dựng cho đến nay đã bị giới hạn bởi thực tế là chúng chỉ hoạt động trên các loại dữ liệu đơn giản. Chương này sẽ giới thiệu các cấu trúc dữ liệu cơ bản. Khi kết thúc, bạn sẽ biết đủ để bắt đầu viết các chương trình hữu ích

Chương này sẽ làm việc thông qua một ví dụ lập trình ít nhiều thực tế, giới thiệu các khái niệm khi chúng áp dụng cho vấn đề hiện tại. Mã ví dụ thường sẽ được xây dựng dựa trên các chức năng và ràng buộc đã được giới thiệu trước đó trong văn bản

con sóc

Thỉnh thoảng, thường là từ 8 giờ tối. m. và 10p. m. , Jacques thấy mình biến thành một loài gặm nhấm lông nhỏ với cái đuôi rậm rạp

Một mặt, Jacques khá vui vì anh ấy không có lycanthropy cổ điển. Biến thành sóc gây ra ít vấn đề hơn biến thành sói. Thay vì phải lo lắng về việc vô tình ăn thịt con hàng xóm [điều đó sẽ rất khó xử], anh ta lo lắng về việc bị con mèo của hàng xóm ăn thịt. Sau hai lần thức dậy trên một cành cây mỏng bấp bênh trên tán cây sồi, trần truồng và mất phương hướng, anh ấy đã khóa cửa ra vào và cửa sổ phòng mình vào ban đêm và đặt một vài quả óc chó trên sàn để giữ cho mình bận rộn.

Điều đó giải quyết các vấn đề về mèo và cây cối. Nhưng Jacques muốn loại bỏ hoàn toàn tình trạng của mình. Sự xuất hiện bất thường của sự biến đổi khiến anh ta nghi ngờ rằng chúng có thể được kích hoạt bởi thứ gì đó. Trong một thời gian, anh tin rằng điều đó chỉ xảy ra vào những ngày anh ở gần những cây sồi. Nhưng tránh cây sồi không ngăn được vấn đề

Chuyển sang một cách tiếp cận khoa học hơn, Jacques đã bắt đầu ghi nhật ký hàng ngày về mọi thứ anh ấy làm trong một ngày nhất định và liệu anh ấy có thay đổi hình thức hay không. Với dữ liệu này, anh ấy hy vọng sẽ thu hẹp các điều kiện kích hoạt các biến đổi

Điều đầu tiên anh ta cần là một cấu trúc dữ liệu để lưu trữ thông tin này

tập dữ liệu

Để làm việc với một đoạn dữ liệu kỹ thuật số, trước tiên chúng ta phải tìm cách thể hiện nó trong bộ nhớ của máy. Ví dụ: giả sử chúng ta muốn biểu diễn tập hợp các số 2, 3, 5, 7 và 11

Chúng ta có thể sáng tạo với các chuỗi—xét cho cùng, các chuỗi có thể có độ dài bất kỳ, vì vậy chúng ta có thể đưa nhiều dữ liệu vào chúng—và sử dụng

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
2 làm đại diện của chúng ta. Nhưng điều này thật khó xử. Bạn phải bằng cách nào đó trích xuất các chữ số và chuyển đổi chúng trở lại số để truy cập chúng

May mắn thay, JavaScript cung cấp một kiểu dữ liệu đặc biệt để lưu trữ các chuỗi giá trị. Nó được gọi là một mảng và được viết dưới dạng danh sách các giá trị nằm giữa các dấu ngoặc vuông, được phân tách bằng dấu phẩy

let listOfNumbers = [2, 3, 5, 7, 11];
console.log[listOfNumbers[2]];
// → 5
console.log[listOfNumbers[0]];
// → 2
console.log[listOfNumbers[2 - 1]];
// → 3

Ký hiệu để lấy các phần tử bên trong một mảng cũng sử dụng dấu ngoặc vuông. Một cặp dấu ngoặc vuông ngay sau một biểu thức, với một biểu thức khác bên trong chúng, sẽ tra cứu phần tử trong biểu thức bên trái tương ứng với chỉ số được đưa ra bởi biểu thức trong ngoặc

Chỉ số đầu tiên của một mảng là 0, không phải là một. Vì vậy, phần tử đầu tiên được truy xuất bằng

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
3. Việc đếm dựa trên số 0 có một truyền thống lâu đời trong công nghệ và theo một số cách nhất định rất có ý nghĩa, nhưng phải mất một thời gian để làm quen. Hãy coi chỉ mục là số lượng mục cần bỏ qua, tính từ đầu mảng

Tính chất

Chúng ta đã thấy một vài biểu thức trông đáng ngờ như

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
4 [để lấy độ dài của một chuỗi] và
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
5 [hàm tối đa] trong các chương trước. Đây là những biểu thức truy cập một thuộc tính của một số giá trị. Trong trường hợp đầu tiên, chúng tôi truy cập thuộc tính
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
6 của giá trị trong
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
7. Trong cách thứ hai, chúng ta truy cập thuộc tính có tên
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
8 trong đối tượng
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9 [là một tập hợp các hàm và hằng số liên quan đến toán học]

Hầu như tất cả các giá trị JavaScript đều có thuộc tính. Các trường hợp ngoại lệ là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
70 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
71. Nếu bạn cố truy cập một thuộc tính trên một trong những giá trị không phải giá trị này, thì bạn sẽ gặp lỗi

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
9

Hai cách chính để truy cập các thuộc tính trong JavaScript là bằng dấu chấm và bằng dấu ngoặc vuông. Cả

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
72 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
73 đều truy cập một thuộc tính trên

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
74—nhưng không nhất thiết phải cùng một thuộc tính. Sự khác biệt là cách

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
75 được giải thích. Khi sử dụng dấu chấm, từ sau dấu chấm là tên theo nghĩa đen của thuộc tính. Khi sử dụng dấu ngoặc vuông, biểu thức giữa các dấu ngoặc được đánh giá để lấy tên thuộc tính. Trong khi

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
72 lấy thuộc tính của

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
74 có tên là “x”, thì

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
73 cố gắng đánh giá biểu thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
75 và sử dụng kết quả, được chuyển đổi thành một chuỗi, làm tên thuộc tính

Vì vậy, nếu bạn biết thuộc tính mà bạn quan tâm được gọi là màu sắc, bạn nói

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
80. Nếu bạn muốn trích xuất thuộc tính được đặt tên theo giá trị được giữ trong ràng buộc

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
81, bạn nói

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
82. Tên thuộc tính là chuỗi. Chúng có thể là bất kỳ chuỗi nào, nhưng ký hiệu dấu chấm chỉ hoạt động với các tên trông giống như tên ràng buộc hợp lệ. Vì vậy, nếu bạn muốn truy cập thuộc tính có tên 2 hoặc John Doe, bạn phải sử dụng dấu ngoặc vuông.

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
83 hoặc

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
84

Các phần tử trong một mảng được lưu trữ dưới dạng các thuộc tính của mảng, sử dụng các số làm tên thuộc tính. Bởi vì bạn không thể sử dụng ký hiệu dấu chấm với các số và thường muốn sử dụng một liên kết chứa chỉ mục, bạn phải sử dụng ký hiệu dấu ngoặc để truy cập chúng

Thuộc tính

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
6 của một mảng cho chúng ta biết nó có bao nhiêu phần tử. Tên thuộc tính này là một tên ràng buộc hợp lệ và chúng tôi biết trước tên của nó, vì vậy, để tìm độ dài của một mảng, bạn thường viết

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
86 vì viết như vậy dễ hơn

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
87

phương pháp

Cả giá trị chuỗi và mảng đều chứa, ngoài thuộc tính

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
6, một số thuộc tính chứa giá trị hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
7

Mỗi chuỗi có thuộc tính

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
89. Khi được gọi, nó sẽ trả về một bản sao của chuỗi trong đó tất cả các chữ cái đã được chuyển thành chữ hoa. Ngoài ra còn có

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
90, đi theo hướng khác

Điều thú vị là, mặc dù lệnh gọi tới

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
89 không truyền bất kỳ đối số nào, nhưng bằng cách nào đó, hàm này có quyền truy cập vào chuỗi

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
92, giá trị có thuộc tính mà chúng tôi đã gọi. Cách thức hoạt động này được mô tả trong

Các thuộc tính chứa các hàm thường được gọi là các phương thức của giá trị mà chúng thuộc về, như trong “

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
89 là một phương thức của một chuỗi”

Ví dụ này minh họa hai phương pháp bạn có thể sử dụng để thao tác với mảng

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
3

Phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
94 thêm giá trị vào cuối mảng và phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
95 thực hiện ngược lại, loại bỏ giá trị cuối cùng trong mảng và trả về giá trị đó

Những cái tên hơi ngớ ngẩn này là thuật ngữ truyền thống cho các hoạt động trên ngăn xếp. Ngăn xếp, trong lập trình, là một cấu trúc dữ liệu cho phép bạn đẩy các giá trị vào đó và bật chúng ra một lần nữa theo thứ tự ngược lại để thứ được thêm vào cuối cùng sẽ bị xóa trước. Đây là những điều phổ biến trong lập trình—bạn có thể nhớ ngăn xếp lệnh gọi hàm từ , đây là một ví dụ của cùng một ý tưởng

Các đối tượng

Trở lại sóc đất. Một tập hợp các mục nhật ký hàng ngày có thể được biểu diễn dưới dạng một mảng. Nhưng các mục nhập không chỉ bao gồm một số hoặc một chuỗi—mỗi mục nhập cần lưu trữ một danh sách các hoạt động và một giá trị Boolean cho biết Jacques có biến thành sóc hay không. Lý tưởng nhất là chúng tôi muốn nhóm các giá trị này lại với nhau thành một giá trị và sau đó đặt các giá trị được nhóm đó vào một mảng các mục nhập nhật ký

Các giá trị của đối tượng kiểu là tập hợp các thuộc tính tùy ý. Một cách để tạo đối tượng là sử dụng dấu ngoặc nhọn làm biểu thức

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
6

Bên trong dấu ngoặc nhọn, có một danh sách các thuộc tính được phân tách bằng dấu phẩy. Mỗi thuộc tính có một tên theo sau bởi một dấu hai chấm và một giá trị. Khi một đối tượng được viết trên nhiều dòng, việc thụt vào nó như trong ví dụ sẽ giúp dễ đọc hơn. Các thuộc tính có tên không phải là tên ràng buộc hợp lệ hoặc số hợp lệ phải được trích dẫn

________số 8

Điều này có nghĩa là dấu ngoặc nhọn có hai nghĩa trong JavaScript. Khi bắt đầu một câu lệnh, họ bắt đầu một khối câu lệnh. Ở bất kỳ vị trí nào khác, họ mô tả một đối tượng. May mắn thay, hiếm khi hữu ích khi bắt đầu một câu lệnh với một đối tượng trong dấu ngoặc nhọn, vì vậy sự mơ hồ giữa hai điều này không phải là vấn đề lớn

Đọc thuộc tính không tồn tại sẽ cung cấp cho bạn giá trị

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
71

Có thể gán giá trị cho biểu thức thuộc tính bằng toán tử

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
97. Điều này sẽ thay thế giá trị của thuộc tính nếu nó đã tồn tại hoặc tạo một thuộc tính mới trên đối tượng nếu nó không tồn tại

Quay trở lại mô hình ràng buộc xúc tu của chúng ta một cách ngắn gọn—các ràng buộc thuộc tính cũng tương tự. Chúng nắm bắt các giá trị, nhưng các ràng buộc và thuộc tính khác có thể đang nắm giữ các giá trị đó. Bạn có thể nghĩ về các vật thể như những con bạch tuộc với bất kỳ số lượng xúc tu nào, mỗi xúc tu đều có một cái tên được xăm trên đó

Người vận hành

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
98 cắt một xúc tu từ một con bạch tuộc như vậy. Đó là một toán tử đơn nguyên, khi được áp dụng cho một thuộc tính đối tượng, sẽ xóa thuộc tính được đặt tên khỏi đối tượng. Đây không phải là một điều phổ biến để làm, nhưng nó có thể

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
7

Toán tử

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
99 nhị phân, khi được áp dụng cho một chuỗi và một đối tượng, sẽ cho bạn biết liệu đối tượng đó có thuộc tính có tên đó hay không. Sự khác biệt giữa việc đặt thuộc tính thành

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
71 và thực sự xóa thuộc tính đó là, trong trường hợp đầu tiên, đối tượng vẫn có thuộc tính [chỉ là nó không có giá trị rất thú vị], trong khi trong trường hợp thứ hai, thuộc tính không còn nữa

Để biết một đối tượng có những thuộc tính nào, bạn có thể sử dụng hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
53. Bạn cung cấp cho nó một đối tượng và nó trả về một mảng các chuỗi—tên thuộc tính của đối tượng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
8

Có một hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
54 sao chép tất cả các thuộc tính từ đối tượng này sang đối tượng khác

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
9

Mảng, sau đó, chỉ là một loại đối tượng chuyên dùng để lưu trữ các chuỗi sự vật. Nếu bạn đánh giá

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
55, nó tạo ra

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
56. Bạn có thể thấy chúng là những con bạch tuộc dẹt, dài với tất cả các xúc tu xếp thành một hàng ngay ngắn, được đánh số

Chúng tôi sẽ đại diện cho nhật ký mà Jacques lưu giữ dưới dạng một mảng các đối tượng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
5

khả năng biến đổi

Chúng ta sẽ sớm bắt đầu lập trình thực tế ngay bây giờ. Đầu tiên, có thêm một phần lý thuyết để hiểu

Chúng tôi đã thấy rằng các giá trị đối tượng có thể được sửa đổi. Các loại giá trị được thảo luận trong các chương trước, chẳng hạn như số, chuỗi và Boolean, đều là bất biến—không thể thay đổi giá trị của các loại đó. Bạn có thể kết hợp chúng và lấy các giá trị mới từ chúng, nhưng khi bạn lấy một giá trị chuỗi cụ thể, giá trị đó sẽ luôn giữ nguyên. Văn bản bên trong nó không thể thay đổi. Nếu bạn có một chuỗi chứa

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
57, mã khác không thể thay đổi một ký tự trong chuỗi của bạn để biến nó thành chính tả

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
58

Các đối tượng hoạt động khác nhau. Bạn có thể thay đổi các thuộc tính của chúng, khiến một giá trị đối tượng có nội dung khác vào các thời điểm khác nhau

Khi chúng ta có hai số, 120 và 120, chúng ta có thể coi chúng chính xác là cùng một số, cho dù chúng có đề cập đến cùng một bit vật lý hay không. Với các đối tượng, có sự khác biệt giữa việc có hai tham chiếu đến cùng một đối tượng và việc có hai đối tượng khác nhau chứa các thuộc tính giống nhau. Hãy xem xét đoạn mã sau

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
90

Các ràng buộc

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
59 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
900 nắm bắt cùng một đối tượng, đó là lý do tại sao việc thay đổi

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
59 cũng làm thay đổi giá trị của

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
900. Họ được cho là có cùng bản sắc. Liên kết

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
903 trỏ đến một đối tượng khác, ban đầu chứa các thuộc tính giống như

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
59 nhưng sống một cuộc sống riêng biệt

Các ràng buộc cũng có thể thay đổi hoặc không đổi, nhưng điều này khác với cách các giá trị của chúng hoạt động. Mặc dù các giá trị số không thay đổi, bạn có thể sử dụng liên kết

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
905 để theo dõi một số đang thay đổi bằng cách thay đổi giá trị của các điểm liên kết tại. Tương tự, mặc dù bản thân một liên kết

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
906 với một đối tượng không thể thay đổi và sẽ tiếp tục trỏ đến cùng một đối tượng, nhưng nội dung của đối tượng đó có thể thay đổi

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
91

Khi bạn so sánh các đối tượng với toán tử

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
907 của JavaScript, nó sẽ so sánh theo danh tính. nó sẽ tạo ra

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
908 chỉ khi cả hai đối tượng đều có cùng giá trị. So sánh các đối tượng khác nhau sẽ trả về

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
52, ngay cả khi chúng có thuộc tính giống hệt nhau. Không có thao tác so sánh “sâu” nào được tích hợp trong JavaScript, so sánh các đối tượng theo nội dung, nhưng bạn có thể tự viết thao tác đó [đây là một trong những thao tác ở cuối chương này]

Nhật ký lycanthrope

Vì vậy, Jacques khởi động trình thông dịch JavaScript của mình và thiết lập môi trường mà anh ấy cần để viết nhật ký.

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
92

Lưu ý rằng đối tượng được thêm vào tạp chí trông hơi lạ. Thay vì khai báo các thuộc tính như

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
910, nó chỉ đưa ra một tên thuộc tính. Đây là cách viết tắt có nghĩa giống nhau—nếu tên thuộc tính trong ký hiệu dấu ngoặc nhọn không có giá trị theo sau, thì giá trị của thuộc tính đó được lấy từ liên kết có cùng tên

Vì vậy, mỗi tối lúc 10 giờ. m. —hoặc đôi khi vào sáng hôm sau, sau khi leo xuống từ ngăn trên cùng của tủ sách—Jacques ghi lại ngày hôm đó

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
93

Sau khi có đủ điểm dữ liệu, anh ấy dự định sử dụng số liệu thống kê để tìm ra sự kiện nào trong số những sự kiện này có thể liên quan đến quá trình sóc hóa

Tương quan là thước đo sự phụ thuộc giữa các biến thống kê. Một biến thống kê không hoàn toàn giống như một biến lập trình. Trong thống kê, bạn thường có một tập hợp các phép đo và mỗi biến được đo cho mọi phép đo. Mối tương quan giữa các biến thường được thể hiện dưới dạng giá trị nằm trong khoảng từ -1 đến 1. Tương quan bằng không có nghĩa là các biến không liên quan. Mối tương quan của một chỉ ra rằng hai cái có liên quan hoàn hảo với nhau—nếu bạn biết cái này thì bạn cũng biết cái kia. Một phủ định cũng có nghĩa là các biến có liên quan hoàn hảo nhưng chúng đối lập nhau khi một biến đúng, biến kia sai

Để tính độ đo tương quan giữa hai biến Boolean, chúng ta có thể sử dụng hệ số phi [ϕ]. Đây là một công thức có đầu vào là một bảng tần số chứa số lần các tổ hợp biến khác nhau được quan sát. Đầu ra của công thức là một số từ -1 đến 1 mô tả mối tương quan

Chúng ta có thể lấy sự kiện ăn bánh pizza và đặt nó vào một bảng tần số như thế này, trong đó mỗi con số biểu thị số lần sự kết hợp đó xảy ra trong các phép đo của chúng ta

Nếu chúng ta gọi bảng đó là n, chúng ta có thể tính ϕ bằng công thức sau

ϕ =

n11n00−n10n01

n1•n0•n•1n•0

[Nếu tại thời điểm này, bạn đang đặt cuốn sách xuống để tập trung vào một đoạn hồi tưởng khủng khiếp về lớp toán lớp 10—hãy chờ đã. Tôi không có ý định tra tấn bạn bằng vô số trang ký hiệu khó hiểu—hiện tại chỉ có một công thức này. Và ngay cả với cái này, tất cả những gì chúng tôi làm là biến nó thành JavaScript. ]

Ký hiệu n01 cho biết số phép đo trong đó biến đầu tiên [độ sóc] là sai [0] và biến thứ hai [pizza] là đúng [1]. Trong bảng pizza, n01 là 9

Giá trị n1• đề cập đến tổng của tất cả các phép đo trong đó biến đầu tiên là đúng, là 5 trong bảng ví dụ. Tương tự như vậy, n•0 đề cập đến tổng của các phép đo trong đó biến thứ hai là sai

Vì vậy, đối với bảng pizza, phần phía trên đường chia [số bị chia] sẽ là 1×76−4×9 = 40 và phần phía dưới nó [số chia] sẽ là căn bậc hai của 5×85×10×80 . Điều này dẫn đến ϕ ≈ 0. 069, nhỏ xíu. Ăn pizza dường như không có ảnh hưởng đến sự biến đổi

tính toán tương quan

Chúng ta có thể biểu diễn một bảng hai nhân hai trong JavaScript bằng một mảng bốn phần tử [

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
911]. Chúng ta cũng có thể sử dụng các cách biểu diễn khác, chẳng hạn như một mảng chứa hai mảng hai phần tử [

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
912] hoặc một đối tượng có các tên thuộc tính như

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
913 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
914, nhưng mảng phẳng đơn giản và làm cho các biểu thức truy cập bảng trở nên ngắn gọn dễ chịu. Chúng tôi sẽ giải thích các chỉ số cho mảng dưới dạng số nhị phân hai bit, trong đó chữ số ngoài cùng bên trái [quan trọng nhất] đề cập đến biến con sóc và chữ số ngoài cùng bên phải [ít quan trọng nhất] đề cập đến biến sự kiện. Ví dụ: số nhị phân

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
915 đề cập đến trường hợp Jacques đã biến thành một con sóc, nhưng sự kiện [ví dụ: “bánh pizza”] đã không xảy ra. Điều này đã xảy ra bốn lần. Và vì hệ nhị phân

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
915 là 2 trong ký hiệu thập phân, chúng tôi sẽ lưu trữ số này ở chỉ số 2 của mảng

Đây là hàm tính hệ số ϕ từ một mảng như vậy

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
94

Đây là bản dịch trực tiếp của công thức ϕ sang JavaScript.

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
917 là hàm căn bậc hai, được cung cấp bởi đối tượng
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9 trong môi trường JavaScript tiêu chuẩn. Chúng ta phải thêm hai trường từ bảng để có được các trường như n1• vì tổng của các hàng hoặc cột không được lưu trữ trực tiếp trong cấu trúc dữ liệu của chúng ta

Jacques giữ nhật ký của mình trong ba tháng. Tập dữ liệu kết quả có sẵn trong phần dành cho chương này, nơi nó được lưu trữ trong liên kết

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
919 và trong một tệp có thể tải xuống

Để trích xuất bảng hai nhân hai cho một sự kiện cụ thể từ nhật ký, chúng ta phải lặp lại tất cả các mục nhập và kiểm đếm số lần sự kiện xảy ra liên quan đến các phép biến đổi sóc

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
95

Mảng có một phương thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
920 để kiểm tra xem một giá trị đã cho có tồn tại trong mảng hay không. Hàm sử dụng điều đó để xác định xem tên sự kiện mà nó quan tâm có phải là một phần của danh sách sự kiện cho một ngày nhất định hay không

Phần thân của vòng lặp trong

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
921 chỉ ra ô nào trong bảng mà mỗi mục nhật ký rơi vào bằng cách kiểm tra xem mục nhập đó có chứa sự kiện cụ thể mà nó quan tâm hay không và liệu sự kiện đó có xảy ra cùng với sự cố sóc hay không. Vòng lặp sau đó thêm một vào ô đúng trong bảng

Bây giờ chúng ta có các công cụ cần thiết để tính toán các mối tương quan riêng lẻ. Bước duy nhất còn lại là tìm mối tương quan cho mọi loại sự kiện đã được ghi lại và xem liệu có điều gì nổi bật không

vòng lặp mảng

Trong hàm

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
921, có một vòng lặp như thế này

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
96

Loại vòng lặp này phổ biến trong JavaScript cổ điển—đi qua từng mảng một phần tử là thứ xuất hiện rất nhiều và để làm được điều đó, bạn sẽ chạy một bộ đếm theo chiều dài của mảng và lần lượt chọn ra từng phần tử

Có một cách đơn giản hơn để viết các vòng lặp như vậy trong JavaScript hiện đại

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
97

Khi một vòng lặp

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
923 trông như thế này, với từ

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
924 sau một định nghĩa biến, nó sẽ lặp qua các phần tử của giá trị đã cho sau

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
924. Điều này không chỉ hoạt động đối với mảng mà còn đối với chuỗi và một số cấu trúc dữ liệu khác. Chúng ta sẽ thảo luận về cách nó hoạt động trong Chương 6

phân tích cuối cùng

Chúng ta cần tính toán mối tương quan cho mọi loại sự kiện xảy ra trong tập dữ liệu. Để làm điều đó, trước tiên chúng ta cần tìm mọi loại sự kiện

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
98

Bằng cách xem qua tất cả các sự kiện và thêm những sự kiện chưa có vào mảng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
926, hàm sẽ thu thập mọi loại sự kiện

Sử dụng điều đó, chúng ta có thể thấy tất cả các mối tương quan

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
99

Hầu hết các mối tương quan dường như nằm gần bằng không. Ăn cà rốt, bánh mì hoặc bánh pudding dường như không kích hoạt sóc lycanthropy. Nó dường như xảy ra thường xuyên hơn vào cuối tuần. Hãy lọc kết quả để chỉ hiển thị các mối tương quan lớn hơn 0. 1 hoặc nhỏ hơn -0. 1

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
70

à há. Có hai yếu tố có mối tương quan rõ ràng mạnh hơn các yếu tố khác. Ăn đậu phộng có tác động tích cực mạnh mẽ đến cơ hội biến thành sóc, trong khi đánh răng có tác động tiêu cực đáng kể

Hấp dẫn. Hãy thử một cái gì đó

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
71

Đó là một kết quả mạnh mẽ. Hiện tượng xảy ra chính xác khi Jacques ăn đậu phộng và không đánh răng. Giá như anh ấy không phải là một người lười biếng trong việc vệ sinh răng miệng, anh ấy thậm chí sẽ không bao giờ nhận ra căn bệnh của mình

Biết được điều này, Jacques ngừng ăn đậu phộng hoàn toàn và thấy rằng sự biến đổi của anh ấy không quay trở lại

Trong một vài năm, mọi thứ trở nên tuyệt vời đối với Jacques. Nhưng đến một lúc nào đó anh ta mất việc. Bởi vì anh ấy sống ở một đất nước tồi tệ, nơi không có việc làm đồng nghĩa với không có dịch vụ y tế, anh ấy buộc phải làm việc cho một rạp xiếc nơi anh ấy biểu diễn với vai The Incredible Squirrelman, nhét bơ đậu phộng vào miệng trước mỗi buổi biểu diễn.

Một ngày nọ, chán ngấy với sự tồn tại đáng thương này, Jacques không thể biến trở lại hình dạng con người của mình, nhảy qua một vết nứt trong lều xiếc và biến mất trong rừng. Anh ấy không bao giờ được nhìn thấy nữa

Mảng hơn nữa

Trước khi kết thúc chương này, tôi muốn giới thiệu với bạn một vài khái niệm liên quan đến đối tượng. Tôi sẽ bắt đầu bằng cách giới thiệu một số phương thức mảng thường hữu ích

Chúng ta đã thấy

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
94 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
95, thêm và xóa các phần tử ở cuối một mảng, trong chương này. Các phương thức tương ứng để thêm và xóa các thứ ở đầu mảng được gọi là _______ 1929 và ________ 1930

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
72

Chương trình đó quản lý một hàng các nhiệm vụ. Bạn thêm nhiệm vụ vào cuối hàng đợi bằng cách gọi ________ 1931 và khi bạn đã sẵn sàng làm việc gì đó, bạn gọi ________ 1932 để lấy [và xóa] mục phía trước khỏi hàng đợi. Hàm

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
933 cũng thêm một tác vụ nhưng thêm nó vào phía trước thay vì phía sau hàng đợi

Để tìm kiếm một giá trị cụ thể, mảng cung cấp phương thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
934. Phương thức tìm kiếm thông qua mảng từ đầu đến cuối và trả về chỉ mục tại đó giá trị được yêu cầu được tìm thấy—hoặc -1 nếu không tìm thấy. Để tìm kiếm từ cuối thay vì bắt đầu, có một phương pháp tương tự gọi là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
935

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
73

Cả

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
934 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
935 đều có đối số thứ hai tùy chọn cho biết nơi bắt đầu tìm kiếm

Một phương thức mảng cơ bản khác là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
938, lấy các chỉ số bắt đầu và kết thúc và trả về một mảng chỉ có các phần tử ở giữa chúng. Chỉ mục bắt đầu bao gồm, chỉ mục kết thúc loại trừ

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
74

Khi chỉ mục kết thúc không được cung cấp,

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
938 sẽ lấy tất cả các phần tử sau chỉ mục bắt đầu. Bạn cũng có thể bỏ qua chỉ mục bắt đầu để sao chép toàn bộ mảng

Phương thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
940 có thể được sử dụng để dán các mảng lại với nhau để tạo một mảng mới, tương tự như những gì toán tử

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
941 thực hiện đối với các chuỗi

Ví dụ sau đây cho thấy cả

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
940 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
938 đang hoạt động. Nó nhận một mảng và một chỉ mục, và nó trả về một mảng mới là bản sao của mảng ban đầu với phần tử tại chỉ mục đã cho đã bị xóa

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
75

Nếu bạn chuyển _____1940 một đối số không phải là một mảng, thì giá trị đó sẽ được thêm vào mảng mới như thể nó là một mảng một phần tử

Chuỗi và thuộc tính của chúng

Chúng ta có thể đọc các thuộc tính như

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
6 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
89 từ các giá trị chuỗi. Nhưng nếu bạn cố gắng thêm một thuộc tính mới, nó sẽ không dính

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
76

Các giá trị của kiểu chuỗi, số và Boolean không phải là các đối tượng và mặc dù ngôn ngữ không phàn nàn nếu bạn cố đặt các thuộc tính mới trên chúng, nhưng nó không thực sự lưu trữ các thuộc tính đó. Như đã đề cập trước đó, các giá trị như vậy là bất biến và không thể thay đổi

Nhưng những loại này có các thuộc tính tích hợp. Mỗi giá trị chuỗi có một số phương thức. Một số rất hữu ích là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
938 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
934, giống với các phương thức mảng cùng tên

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
77

Một điểm khác biệt là một chuỗi

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
934 có thể tìm kiếm một chuỗi chứa nhiều hơn một ký tự, trong khi phương thức mảng tương ứng chỉ tìm kiếm một phần tử duy nhất

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
78

Phương thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
950 xóa khoảng trắng [dấu cách, dòng mới, tab và các ký tự tương tự] khỏi đầu và cuối chuỗi

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
79

Hàm

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
951 từ chương trước cũng tồn tại như một phương thức. Nó được gọi là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
952 và lấy ký tự đệm và độ dài mong muốn làm đối số

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
30

Bạn có thể tách một chuỗi trên mỗi lần xuất hiện của một chuỗi khác với

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
953 và nối lại chuỗi đó với

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
954

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
31

Một chuỗi có thể được lặp lại bằng phương thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
955, phương thức này tạo ra một chuỗi mới chứa nhiều bản sao của chuỗi ban đầu, được dán lại với nhau

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
32

Chúng ta đã thấy thuộc tính

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
6 của kiểu chuỗi. Truy cập các ký tự riêng lẻ trong một chuỗi giống như truy cập các phần tử của mảng [với một lưu ý mà chúng ta sẽ thảo luận trong phần ]

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
33

Thông số nghỉ ngơi

Nó có thể hữu ích cho một hàm chấp nhận bất kỳ số lượng đối số nào. Ví dụ:

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
5 tính toán giá trị tối đa của tất cả các đối số mà nó đưa ra

Để viết một hàm như vậy, bạn đặt ba dấu chấm trước tham số cuối cùng của hàm, như thế này

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
34

Khi một hàm như vậy được gọi, tham số còn lại được liên kết với một mảng chứa tất cả các đối số khác. Nếu có các tham số khác trước nó, giá trị của chúng không phải là một phần của mảng đó. Khi, như trong

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
8, nó là tham số duy nhất, nó sẽ giữ tất cả các đối số

Bạn có thể sử dụng ký hiệu dấu ba chấm tương tự để gọi một hàm với một mảng đối số

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
35

Điều này "trải rộng" ra mảng vào lệnh gọi hàm, chuyển các phần tử của nó dưới dạng các đối số riêng biệt. Có thể bao gồm một mảng như vậy cùng với các đối số khác, như trong

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
959

Ký hiệu mảng dấu ngoặc vuông tương tự cho phép toán tử dấu ba chấm trải một mảng khác sang mảng mới

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
36

đối tượng Toán học

Như chúng ta đã thấy,

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9 là một tập hợp các hàm tiện ích liên quan đến số, chẳng hạn như
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
5 [tối đa],

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
962 [tối thiểu] và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
917 [căn bậc hai]

Đối tượng

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9 được sử dụng như một thùng chứa để nhóm một loạt các chức năng liên quan. Chỉ có một đối tượng
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9 và nó hầu như không bao giờ hữu ích như một giá trị. Thay vào đó, nó cung cấp một không gian tên để tất cả các chức năng và giá trị này không phải là các ràng buộc toàn cầu

Có quá nhiều ràng buộc toàn cục “làm ô nhiễm” không gian tên. Càng nhiều tên được sử dụng, bạn càng có nhiều khả năng vô tình ghi đè lên giá trị của một số ràng buộc hiện có. Ví dụ: bạn không muốn đặt tên thứ gì đó là

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
8 trong một trong các chương trình của mình. Vì hàm
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
8 tích hợp sẵn của JavaScript được giấu an toàn bên trong đối tượng
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9, nên chúng ta không phải lo lắng về việc ghi đè lên nó

Nhiều ngôn ngữ sẽ ngăn bạn hoặc ít nhất là cảnh báo bạn khi bạn đang xác định một liên kết có tên đã được sử dụng. JavaScript thực hiện điều này đối với các ràng buộc bạn đã khai báo bằng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
905 hoặc

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
906 nhưng—ngược lại—không phải đối với các ràng buộc tiêu chuẩn cũng như các ràng buộc được khai báo bằng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
971 hoặc

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
972

Quay lại đối tượng

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9. Nếu bạn cần làm lượng giác,
let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
9 có thể giúp. Nó chứa

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
975 [cosine],

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
976 [sin] và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
977 [tiếp tuyến], cũng như các hàm nghịch đảo của chúng, lần lượt là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
978,

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
979 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
980. Số π [pi]—hoặc ít nhất là giá trị gần đúng nhất phù hợp với số JavaScript—có sẵn dưới dạng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
981. Có một truyền thống lập trình cũ là viết hoa tất cả các tên của các giá trị không đổi

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
37

Nếu sin và cosin không phải là thứ bạn quen thuộc, đừng lo lắng. Khi chúng được sử dụng trong cuốn sách này, trong , tôi sẽ giải thích chúng

Ví dụ trước sử dụng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
982. Đây là một hàm trả về một số giả ngẫu nhiên mới giữa 0 [bao gồm] và một [độc quyền] mỗi khi bạn gọi nó

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
38

Mặc dù máy tính là cỗ máy xác định—chúng luôn phản ứng theo cùng một cách nếu được cung cấp cùng một đầu vào—chúng có thể tạo ra các số xuất hiện ngẫu nhiên. Để làm điều đó, máy sẽ giữ một số giá trị ẩn và bất cứ khi nào bạn yêu cầu một số ngẫu nhiên mới, nó sẽ thực hiện các phép tính phức tạp trên giá trị ẩn này để tạo ra một giá trị mới. Nó lưu trữ một giá trị mới và trả về một số số bắt nguồn từ nó. Bằng cách đó, nó có thể tạo ra những con số mới, khó dự đoán theo cách có vẻ như ngẫu nhiên

Nếu chúng ta muốn một số nguyên ngẫu nhiên thay vì một số phân số, chúng ta có thể sử dụng ________ 1983 [làm tròn xuống số nguyên gần nhất] trên kết quả của ________ 1982

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
39

Nhân số ngẫu nhiên với 10 sẽ cho ta một số lớn hơn hoặc bằng 0 và nhỏ hơn 10. Vì

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
983 làm tròn xuống, biểu thức này sẽ tạo ra, với cơ hội như nhau, bất kỳ số nào từ 0 đến 9

Ngoài ra còn có các hàm

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
986 [đối với “trần”, làm tròn lên đến một số nguyên],

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
987 [đến số nguyên gần nhất] và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
988, lấy giá trị tuyệt đối của một số, nghĩa là nó phủ định các giá trị âm nhưng để lại giá trị dương

hủy hoại

Hãy quay lại hàm

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
989 trong giây lát

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
60

Một trong những lý do khiến hàm này khó đọc là chúng ta có một liên kết trỏ vào mảng của mình, nhưng chúng tôi muốn có các liên kết cho các phần tử của mảng hơn, nghĩa là,

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
990, v.v. May mắn thay, có một cách ngắn gọn để làm điều này trong JavaScript

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
61

Điều này cũng hoạt động đối với các ràng buộc được tạo bằng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
905,

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
971 hoặc

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
906. Nếu bạn biết giá trị mà bạn đang ràng buộc là một mảng, bạn có thể sử dụng dấu ngoặc vuông để “nhìn vào bên trong” giá trị, ràng buộc nội dung của nó

Một thủ thuật tương tự hoạt động với các đối tượng, sử dụng dấu ngoặc nhọn thay vì dấu ngoặc vuông

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
62

Lưu ý rằng nếu bạn cố gắng hủy cấu trúc

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
70 hoặc

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
71, bạn sẽ gặp lỗi, tương tự như khi bạn cố gắng truy cập trực tiếp vào thuộc tính của các giá trị đó

JSON

Bởi vì các thuộc tính chỉ nắm bắt giá trị của chúng, thay vì chứa nó, các đối tượng và mảng được lưu trữ trong bộ nhớ của máy tính dưới dạng các chuỗi bit chứa địa chỉ—vị trí trong bộ nhớ—của nội dung của chúng. Vì vậy, một mảng với một mảng khác bên trong nó bao gồm [ít nhất] một vùng bộ nhớ cho mảng bên trong và một vùng khác cho mảng bên ngoài, chứa [trong số những thứ khác] một số nhị phân biểu thị vị trí của mảng bên trong

Nếu bạn muốn lưu dữ liệu trong một tệp để sử dụng sau này hoặc gửi dữ liệu đó đến một máy tính khác qua mạng, bạn phải bằng cách nào đó chuyển đổi các địa chỉ bộ nhớ lộn xộn này thành một mô tả có thể được lưu trữ hoặc gửi đi. Tôi cho rằng bạn có thể gửi toàn bộ bộ nhớ máy tính của mình cùng với địa chỉ của giá trị mà bạn quan tâm, nhưng đó dường như không phải là cách tiếp cận tốt nhất

Những gì chúng ta có thể làm là tuần tự hóa dữ liệu. Điều đó có nghĩa là nó được chuyển đổi thành một mô tả phẳng. Một định dạng tuần tự hóa phổ biến được gọi là JSON [phát âm là “Jason”], viết tắt của JavaScript Object Notation. Nó được sử dụng rộng rãi như một định dạng lưu trữ và giao tiếp dữ liệu trên Web, ngay cả trong các ngôn ngữ khác ngoài JavaScript

JSON trông tương tự như cách viết mảng và đối tượng của JavaScript, với một số hạn chế. Tất cả các tên thuộc tính phải được bao quanh bởi dấu ngoặc kép và chỉ các biểu thức dữ liệu đơn giản mới được phép—không gọi hàm, liên kết hoặc bất kỳ thứ gì liên quan đến tính toán thực tế. Nhận xét không được phép trong JSON

Một mục nhật ký có thể trông như thế này khi được biểu diễn dưới dạng dữ liệu JSON

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
63

JavaScript cung cấp cho chúng ta các hàm

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
996 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
997 để chuyển đổi dữ liệu sang và từ định dạng này. Cái đầu tiên lấy một giá trị JavaScript và trả về một chuỗi được mã hóa JSON. Cái thứ hai lấy một chuỗi như vậy và chuyển đổi nó thành giá trị mà nó mã hóa

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
64

Tóm lược

Các đối tượng và mảng [là một loại đối tượng cụ thể] cung cấp các cách để nhóm một số giá trị thành một giá trị duy nhất. Về mặt khái niệm, điều này cho phép chúng ta bỏ nhiều thứ có liên quan vào một chiếc túi và chạy xung quanh với chiếc túi, thay vì vòng tay ôm lấy tất cả những thứ riêng lẻ và cố gắng giữ chúng riêng lẻ

Hầu hết các giá trị trong JavaScript đều có thuộc tính, ngoại lệ là

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
70 và

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
71. Thuộc tính được truy cập bằng cách sử dụng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
700 hoặc

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
701. Các đối tượng có xu hướng sử dụng tên cho các thuộc tính của chúng và lưu trữ ít nhiều một bộ cố định của chúng. Mặt khác, các mảng thường chứa các lượng giá trị giống hệt nhau về mặt khái niệm khác nhau và sử dụng các số [bắt đầu từ 0] làm tên của các thuộc tính của chúng

Có một số thuộc tính được đặt tên trong mảng, chẳng hạn như

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
6 và một số phương thức. Phương thức là các hàm sống trong các thuộc tính và [thường] hành động dựa trên giá trị mà chúng là thuộc tính của

Bạn có thể lặp qua các mảng bằng cách sử dụng một loại vòng lặp đặc biệt

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
923—

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
704

bài tập

tổng của một phạm vi

Phần giới thiệu của cuốn sách này đề cập đến những điều sau đây như một cách hay để tính tổng của một dãy số

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
65

Viết hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
705 nhận hai đối số,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
706 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
707, rồi trả về một mảng chứa tất cả các số từ

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
706 đến [và bao gồm]

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
707

Tiếp theo, hãy viết hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
710 nhận vào một mảng số và trả về tổng của những số này. Chạy chương trình ví dụ và xem nó có thực sự trả về 55 không

Là một nhiệm vụ bổ sung, hãy sửa đổi hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
705 của bạn để nhận một đối số thứ ba tùy chọn cho biết giá trị "bước" được sử dụng khi xây dựng mảng. Nếu không có bước nào được đưa ra, các phần tử sẽ tăng lên từng bước một, tương ứng với hành vi cũ. Hàm gọi

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
712 sẽ trả về

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
713. Đảm bảo rằng nó cũng hoạt động với các giá trị bước âm để

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
714 tạo ra

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
715

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
66

Việc xây dựng một mảng được thực hiện dễ dàng nhất bằng cách trước tiên khởi tạo một liên kết tới

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
716 [một mảng mới, trống] và liên tục gọi phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
94 của nó để thêm một giá trị. Đừng quên trả về mảng ở cuối hàm

Vì ranh giới kết thúc là bao gồm, bạn sẽ cần sử dụng toán tử

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
718 thay vì

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
719 để kiểm tra kết thúc vòng lặp của mình

Tham số bước có thể là một tham số tùy chọn mặc định [sử dụng toán tử

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
97] thành 1

Để

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
705 hiểu các giá trị bước âm có lẽ được thực hiện tốt nhất bằng cách viết hai vòng lặp riêng biệt—một vòng lặp để đếm lên và một vòng lặp để đếm xuống—vì phép so sánh để kiểm tra xem vòng lặp đã kết thúc hay chưa cần phải là

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
722 thay vì

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
718 khi đếm xuống

Cũng có thể đáng để sử dụng một bước mặc định khác, cụ thể là -1, khi phần cuối của phạm vi nhỏ hơn phần đầu. Bằng cách đó,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
724 trả về một cái gì đó có ý nghĩa, thay vì bị mắc kẹt trong một vòng lặp vô hạn. Có thể tham khảo các tham số trước đó trong giá trị mặc định của tham số

Đảo ngược một mảng

Mảng có phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
725 thay đổi mảng bằng cách đảo ngược thứ tự xuất hiện các phần tử của mảng. Đối với bài tập này, hãy viết hai hàm,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
726 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
727. Đầu tiên,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
726, lấy một mảng làm đối số và tạo một mảng mới có cùng các phần tử theo thứ tự nghịch đảo. Phương thức thứ hai,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
727, thực hiện những gì mà phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
725 thực hiện. nó sửa đổi mảng được cho làm đối số bằng cách đảo ngược các phần tử của nó. Không thể sử dụng phương pháp

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
725 tiêu chuẩn

Nghĩ lại các ghi chú về tác dụng phụ và chức năng thuần túy trong , bạn mong muốn biến thể nào sẽ hữu ích trong nhiều tình huống hơn?

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
67

Có hai cách rõ ràng để thực hiện

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
726. Đầu tiên là chỉ cần đi qua mảng đầu vào từ trước ra sau và sử dụng phương thức

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
929 trên mảng mới để chèn từng phần tử vào đầu của nó. Cách thứ hai là lặp ngược mảng đầu vào và sử dụng phương thức

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
94. Lặp lại một mảng ngược yêu cầu một đặc điểm kỹ thuật [hơi khó xử]

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
923, như

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
736

Đảo ngược mảng tại chỗ khó hơn. Bạn phải cẩn thận để không ghi đè lên các phần tử mà sau này bạn sẽ cần. Sử dụng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
726 hoặc sao chép toàn bộ mảng [

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
738 là một cách hay để sao chép một mảng] hoạt động nhưng gian lận

Thủ thuật là hoán đổi phần tử đầu tiên và phần tử cuối cùng, sau đó là phần tử thứ hai và phần tử thứ hai với phần tử cuối cùng, v.v. Bạn có thể thực hiện việc này bằng cách lặp trên một nửa độ dài của mảng [dùng

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
983 để làm tròn xuống—bạn không cần chạm vào phần tử ở giữa trong một mảng có số phần tử lẻ] và hoán đổi phần tử ở vị trí

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
81 bằng một . Bạn có thể sử dụng liên kết cục bộ để giữ nhanh một trong các phần tử, ghi đè lên phần tử đó bằng hình ảnh phản chiếu của nó, sau đó đặt giá trị từ liên kết cục bộ vào vị trí mà hình ảnh phản chiếu từng là

Một danh sách

Các đối tượng, như các đốm giá trị chung, có thể được sử dụng để xây dựng tất cả các loại cấu trúc dữ liệu. Một cấu trúc dữ liệu phổ biến là danh sách [đừng nhầm với mảng]. Danh sách là một tập hợp các đối tượng lồng nhau, với đối tượng đầu tiên giữ tham chiếu đến đối tượng thứ hai, đối tượng thứ hai đến đối tượng thứ ba, v.v.

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
68

Các đối tượng kết quả tạo thành một chuỗi, như thế này

Một điều thú vị về danh sách là chúng có thể chia sẻ các phần trong cấu trúc của chúng. Ví dụ: nếu tôi tạo hai giá trị mới

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
742 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
743 [với

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
744 đề cập đến ràng buộc được xác định trước đó], cả hai đều là danh sách độc lập nhưng chúng có chung cấu trúc tạo nên ba phần tử cuối cùng của chúng. Danh sách ban đầu vẫn là danh sách ba phần tử hợp lệ

Viết một hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
745 xây dựng cấu trúc danh sách giống như cấu trúc được hiển thị khi đưa ra đối số

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
746. Đồng thời viết một hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
747 để tạo một mảng từ một danh sách. Sau đó, thêm một hàm trợ giúp

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
748, lấy một phần tử và một danh sách rồi tạo một danh sách mới thêm phần tử vào phía trước danh sách đầu vào và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
749, lấy một danh sách và một số rồi trả về phần tử ở vị trí đã cho trong

Nếu bạn chưa viết, hãy viết một phiên bản đệ quy của

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
749

[ 'firstName', 'lastName' ]

Code language: JSON / JSON with Comments [json]
69

Xây dựng danh sách dễ dàng hơn khi thực hiện từ trước ra sau. Vì vậy,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
745 có thể lặp lại mảng ngược [xem bài tập trước] và, đối với mỗi phần tử, thêm một đối tượng vào danh sách. Bạn có thể sử dụng liên kết cục bộ để giữ phần danh sách đã được tạo cho đến nay và sử dụng phép gán như

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
753 để thêm phần tử

Để chạy qua một danh sách [trong

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
747 và

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
749], có thể sử dụng đặc tả vòng lặp

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
923 như thế này

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
0

Bạn có thể thấy nó hoạt động như thế nào không? . Khi kết thúc một lần lặp,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
757 chuyển sang danh sách con tiếp theo. Khi đó là null, chúng tôi đã đến cuối danh sách và vòng lặp kết thúc

Tương tự, phiên bản đệ quy của

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
749 sẽ xem xét một phần nhỏ hơn bao giờ hết của “đuôi” của danh sách và đồng thời đếm ngược chỉ mục cho đến khi nó bằng 0, tại thời điểm đó, nó có thể trả về thuộc tính

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
74 của nút đó. . Để lấy phần tử thứ 0 của danh sách, bạn chỉ cần lấy thuộc tính

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
74 của nút đầu của nó. Để lấy phần tử N + 1, bạn lấy phần tử thứ N của danh sách nằm trong thuộc tính

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
763 của danh sách này

So sánh sâu sắc

Toán tử

const person = { firstName: 'John', lastName: 'Doe' };

Code language: JavaScript [javascript]
907 so sánh các đối tượng theo danh tính. Nhưng đôi khi bạn muốn so sánh các giá trị thuộc tính thực tế của chúng

Viết một hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
765 nhận hai giá trị và chỉ trả về true nếu chúng có cùng giá trị hoặc là các đối tượng có cùng thuộc tính, trong đó giá trị của các thuộc tính bằng nhau khi so sánh với lệnh gọi đệ quy tới

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
765

Để tìm hiểu xem các giá trị có nên được so sánh trực tiếp hay không [sử dụng toán tử

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
767 cho điều đó] hoặc so sánh các thuộc tính của chúng, bạn có thể sử dụng toán tử

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
768. Nếu nó tạo ra

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
56 cho cả hai giá trị, bạn nên so sánh sâu. Nhưng bạn phải tính đến một ngoại lệ ngớ ngẩn. vì một tai nạn lịch sử,

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
770 cũng tạo ra

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
56

Hàm

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
53 sẽ hữu ích khi bạn cần xem qua các thuộc tính của các đối tượng để so sánh chúng

let descriptions = {
  work: "Went to work",
  "touched tree": "Touched a tree"
};
1

Bài kiểm tra xem bạn có đang xử lý một đối tượng thực hay không sẽ trông giống như

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
773. Hãy cẩn thận chỉ so sánh các thuộc tính khi cả hai đối số đều là đối tượng. Trong tất cả các trường hợp khác, bạn có thể ngay lập tức trả lại kết quả của việc áp dụng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
767

Sử dụng

const propertyNames = Object.keys[person]; console.log[propertyNames];

Code language: JavaScript [javascript]
53 để xem qua các thuộc tính. Bạn cần kiểm tra xem cả hai đối tượng có cùng một bộ tên thuộc tính hay không và liệu các thuộc tính đó có giá trị giống nhau không. Một cách để làm điều đó là đảm bảo rằng cả hai đối tượng đều có cùng số thuộc tính [độ dài của danh sách thuộc tính giống nhau]. Và sau đó, khi lặp qua một trong các thuộc tính của đối tượng để so sánh chúng, trước tiên hãy luôn đảm bảo rằng đối tượng kia thực sự có thuộc tính theo tên đó. Nếu chúng có cùng số lượng thuộc tính và tất cả các thuộc tính trong cái này cũng tồn tại trong cái kia, thì chúng có cùng một bộ tên thuộc tính

Trả về giá trị chính xác từ hàm được thực hiện tốt nhất bằng cách trả về false ngay lập tức khi tìm thấy giá trị không khớp và trả về true ở cuối hàm

Làm cách nào để thêm mảng đối tượng bằng khóa trong JavaScript?

Để thêm một cặp khóa/giá trị cho tất cả các đối tượng trong một mảng. Sử dụng Mảng. phương thức forEach[] để lặp qua mảng. Trên mỗi lần lặp lại, hãy sử dụng ký hiệu dấu chấm để thêm một cặp khóa/giá trị vào đối tượng hiện tại .

Làm cách nào để lấy mảng khóa đối tượng trong JavaScript?

Để lấy tất cả các khóa của một Đối tượng, bạn có thể sử dụng Đối tượng. phím[] . Vật. keys[] lấy một đối tượng làm đối số và trả về một mảng gồm tất cả các khóa.

Làm cách nào để nhóm mảng đối tượng theo khóa JavaScript?

Cách hiệu quả nhất để nhóm các đối tượng theo khóa là sử dụng hàm Giảm trong js . Các phương thức Giảm [] thực thi các hàm rút gọn trên tất cả các điểm dữ liệu trên một mảng và dẫn đến một giá trị đầu ra có cùng giá trị.

Làm cách nào để tạo mảng có giá trị khóa trong JavaScript?

Cách tạo mảng giá trị khóa trong javascript .
cho obj = {}; . com'; . .
for[let key in obj]{ console. .
for[let key in obj]{ if[obj

Chủ Đề