在 JavaScript 中,如何设置数组中对象的属性为真/假,判断该对象的 id 是否与另一个对象数组中的任何 id 匹配?
本文将要执行的任务是“在 JavaScript 中,设置数组中对象的属性为真/假,判断该对象的 id 是否与另一个对象数组中的任何 id 匹配”。在深入本文之前,让我们先简单了解一下 JavaScript 中的对象和数组。
在 JavaScript 中,对象是一个独立的实体,具有属性和类型。JavaScript 对象具有指定其属性的属性。
通过使用数组,可以在单个变量中保存多个值。将其与只能容纳一个值的变量进行比较。数组中的每个项目都与一个关联的数字相关联,您可以通过使用该数字来访问该项目,称为数字索引。JavaScript 中的数组从索引零开始,并且可以使用各种操作进行更改。
语法
以下是 JavaScript 中数组的语法 -
const array_name = [item1, item2, ...];
让我们深入本文,了解“如何在 JavaScript 中设置数组中对象的属性为真/假,判断该对象的 id 是否与另一个对象数组中的任何 id 匹配”。您可以使用 reduce() 结合 map()。
JavaScript 中的 reduce()
JavaScript 中的 reduce() 方法用于将(回调)函数应用于数组中的每个元素,从而生成单个输出值。它对数组中存在的每个元素执行回调函数,不包括数组中的空洞。
然后它将前一次迭代的结果存储到累加器参数中,并将其传递到后续迭代,直到所有值都处理完毕。
语法
以下是 JavaScript 中 reduce() 的语法 -
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
JavaScript 中的 map()
任何类型的数据都可以在映射中用作键或值,它还会记住其元素出现的顺序。它用于通过重复遍历数组中的每个元素来创建一个新的数组。
语法
以下是 JavaScript 中 map() 的语法 -
array.map(function(currentValue, index, arr), thisValue)
为了更好地理解,让我们看看以下示例。
示例
在下面的示例中,我们使用reduce()结合map()。
<!DOCTYPE html> <html> <body> <p id="tutorial"></p> <script> let array_1=[{"id":1,"name":"bmw"},{"id":22,"name":"audi"},{"id":3,"name":"bullet"}] let array_2=[{"id":1,"name":"benz"},{"id":82,"name":"rx100"},{"id":3,"name":"bullet"},] document.write("Contents of the first array: ", JSON.stringify(array_1),"<br>"); document.write("Contents of the second array: ", JSON.stringify(array_2),"<br>"); const o = array_2.reduce((r, e) => (r[e.id] = true, r), {}) const result = array_1.map(e => ({ ...e, matches: o[e.id] || false})) document.write("Result of the comparison: ",JSON.stringify(result)); </script> </body> </html>
示例
考虑以下示例,其中我们使用循环。
<!DOCTYPE html> <html> <body> <p id="tutorial"></p> <script> let tutorial_1 = [ { id: 5, car: 'cruze' }, { id: 2, car: 'beats' }, { id: 3, car: 'sail' }, ]; let tutorial_2 = [ { id: 1, car: 'city' }, { id: 80, car: 'verna' }, { id: 3, car: 'electra' }, ]; tutorial_1.forEach(item_1 => { for (let i = 0; i < tutorial_2.length; i++) { item_1.matches = tutorial_2[i].id === item_1.id } }); document.getElementById("tutorial").innerHTML= JSON.stringify(('matched_array', tutorial_1)); </script> </body> </html>
示例
在下面的示例中,我们声明了一个固定数组,并使用 every() 方法进行比较。
<!DOCTYPE html> <html> <body> <p id="tutorial"></p> <script> let fixed = ["abc", "def", "ghi"]; let Array1 = [{ bike: "rx100", id: "abc" }, { bike: "pulsar", id: "def" }, { bike: "splendor", id: "ghi" }]; let conA1 = Array1.every(elem => fixed.includes(elem.id)); document.getElementById("tutorial").innerHTML= conA1; </script> </body> </html>
当脚本执行时,会触发事件,该事件将数组与固定数组进行比较并给出值。在这种情况下,它将在 Web 浏览器上显示“true”,因为数组与固定数组匹配。