Mảng bao gồm giá trị đối tượng javascript

Có hai phương thức mảng JavaScript thường được sử dụng để tìm một giá trị trong một mảng. includes()indexOf(). Nếu bạn đang kiểm tra xem một mảng có chứa giá trị nguyên thủy hay không, chẳng hạn như chuỗi hoặc số, giải pháp sẽ đơn giản hơn so với việc bạn đang kiểm tra giá trị là một đối tượng

Kiểm tra xem một mảng có chứa giá trị nguyên thủy hay không

Giá trị nguyên thủy là một giá trị không phải là một đối tượng. Có bảy kiểu dữ liệu nguyên thủy. chuỗi, số, bigint, boolean, undefined, ký hiệu và

console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
0. Sử dụng phương thức includes() là phương thức dễ đọc nhất để kiểm tra xem một mảng có chứa giá trị nguyên thủy hay không

console.log(["Jenny", "Matilda", "Greta"].includes("Matilda")); // true

Đối số đầu tiên của phương thức includes()

console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
3. Đây là giá trị mà phương thức tìm kiếm trong mảng. Phương thức trả về
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
4 nếu tìm thấy
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
3 và
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
6 nếu không tìm thấy. Ngoài ra còn có một đối số thứ hai tùy chọn có tên là
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
7, là chỉ mục để bắt đầu tìm kiếm trong mảng

Bạn cũng có thể sử dụng phương thức indexOf() để xác định xem một mảng có chứa giá trị nguyên thủy hay không

console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true

Phương thức này trả về vị trí chỉ mục của giá trị trong mảng. Nếu giá trị không có trong mảng, nó trả về -1. Bạn có thể sử dụng điều này với toán tử bất đẳng thức nghiêm ngặt (_______0_______9) để trả về

console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
4 nếu giá trị nằm trong mảng hoặc
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
6 nếu không

Bạn cũng có thể sử dụng phương thức

const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true
2 giống như phương thức indexOf() để kiểm tra xem một mảng có chứa giá trị nguyên thủy hay không

Kiểm tra xem một mảng có chứa đối tượng không

Nếu bạn đang kiểm tra xem một mảng có chứa một đối tượng trỏ đến cùng một vị trí trong bộ nhớ với một trong các mục của mảng hay không, thì việc kiểm tra sẽ giống như khi kiểm tra một giá trị nguyên thủy

const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true

Nếu giá trị không trỏ đến cùng một vị trí trong bộ nhớ, phương thức includes() sẽ trả về

console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
6. Trong mã bên dưới, một đối tượng mới được tạo cho biến
const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true
6, biến này có cùng thuộc tính với phần tử đầu tiên trong mảng
const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true
7

const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false

Mặc dù hai đối tượng khác nhau có thể có cùng các thuộc tính với các giá trị bằng nhau, nhưng chúng không được coi là bằng nhau khi so sánh bằng cách sử dụng toán tử đẳng thức nghiêm ngặt (

const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true
8), mà phương thức includes() sử dụng. Điều này là do chúng đang được so sánh theo tham chiếu của chúng, đó là vị trí của chúng trong bộ nhớ. Điều này không giống như các giá trị nguyên thủy, được so sánh theo giá trị

Để kiểm tra xem hai đối tượng có cấu trúc bằng nhau hay không, cần có một hàm trợ giúp. Nó sẽ lặp qua các thuộc tính của từng đối tượng để kiểm tra xem chúng có cùng thuộc tính với cùng giá trị không

function shallowEqualityCheck(obj1, obj2) {
  const keys1 = Object.keys(obj1);
  const keys2 = Object.keys(obj2);
  if (keys1.length !== keys2.length) {
    return false;
  }
  for (const key of keys1) {
    if (obj1[key] !== obj2[key]) {
      return false;
    }
  }
  return true;
}

Hàm

const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
0 này trước tiên kiểm tra xem các đối tượng có cùng số lượng thuộc tính hay không và nếu có, hàm sẽ kiểm tra xem giá trị của từng thuộc tính trong đối tượng 1 có giống với giá trị của thuộc tính tương ứng trong đối tượng 2 không

Chức năng này thực hiện kiểm tra bình đẳng nông của hai đối tượng. Nó không kiểm tra các thuộc tính đối tượng lồng nhau. Nếu bạn cần so sánh các đối tượng với các thuộc tính lồng nhau, bạn sẽ cần thực hiện

Hàm kiểm tra đẳng thức nông này có thể được sử dụng với phương thức mảng

const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
1 để kiểm tra xem một mảng có chứa một đối tượng cụ thể hay không

const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.some((item) => shallowEqualityCheck(item, val))); // true

Phương thức

const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
1 kiểm tra xem ít nhất một phần tử trong mảng có vượt qua bài kiểm tra được thực hiện bởi phương thức truyền vào
const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
3 hay không. Hàm này được thực thi cho từng phần tử của mảng. Nếu hàm trả về
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
4 cho bất kỳ mục nào trong mảng, thì phương thức
const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
1 sẽ trả về
console.log(["Jenny", "Matilda", "Greta"].indexOf("Matilda") !== -1); // true
4

Trong đoạn mã trên, phương thức

const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
1 sử dụng hàm
const person = [{ name: "Bill" }, { age: 44 }];
const val = { name: "Bill" };
console.log(person.includes(val)); // false
0 để kiểm tra xem có bất kỳ phần tử nào trong mảng
const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true
7 khớp với giá trị của đối tượng
const person = [{ name: "Bill" }, { age: 44 }];
const val = person[0];
console.log(person.includes(val)); // true
6 không

Một mảng có thể chứa các đối tượng JavaScript không?

Có nhiều phương pháp để kiểm tra một mảng có đối tượng hay không. Sử dụng phương thức bao gồm (). Nếu mảng có chứa đối tượng/phần tử thì có thể xác định bằng cách sử dụng phương thức include() . Phương thức này trả về true nếu mảng chứa đối tượng/phần tử khác trả về false.

Làm cách nào để kiểm tra xem một mảng đối tượng có chứa giá trị trong JavaScript không?

Mảng JavaScript gồm() . Phương thức include() trả về false nếu không tìm thấy giá trị.

Liệu một mảng có chứa các đối tượng?

Lưu trữ các đối tượng trong một mảng . Yes, since objects are also considered as datatypes (reference) in Java, you can create an array of the type of a particular class and, populate it with instances of that class.

Giá trị đối tượng có thể là mảng không?

Giống như các thuộc tính đối tượng có thể lưu trữ các giá trị của bất kỳ kiểu dữ liệu nguyên thủy nào (cũng như một mảng hoặc một đối tượng khác), nên mảng cũng có thể bao gồm các chuỗi, số, boolean, đối tượng . .