在 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”,因为数组固定数组匹配。

更新于: 2023年1月18日

639 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告