簡體   English   中英

如何將數組中的 object 項目元素與 reduce 進行比較?

[英]How comparing object item elements in an array with reduce?

我有數組

 const example = [{ day: 5, month: 1, key: 1 },{ day: 5, month: 1, key: 2 },{ day: 3, month: 3, key: 3 },{ day: 5, month: 1, key: 4 },{ day: 3, month: 3, key: 5 },{ day: 11, month: 4, key: 6 }];

怎樣檢查元素的天和月的時候是否相同? 如果年份和月份重復我希望結果返回

{err:'the same',index:[0,1,2,3]}

我的代碼不起作用。

const duplicates = Object.entries(array).reduce((acc, item, index) => {
  if (acc[1].year === item[1].year && acc[1].month === item[1].month) {
    return [
      {
        index:[acc[0],acc[1]],
        err: "the same"
      }
    ];
  }
return acc;});
  • 使用Array#reduce遍歷數組,得到一個Map作為key ,它的出現索引作為value
  • 使用Array#filter ,獲取具有多個索引的條目。
  • 之后,使用Array#map返回列表。

 const array = [ { day: 5, month: 1, key: 1 }, { day: 5, month: 1, key: 2 }, { day: 3, month: 3, key: 3 }, { day: 5, month: 1, key: 4 }, { day: 3, month: 3, key: 5 }, { day: 11, month: 4, key: 6 } ]; const duplicates = [...array.reduce((map, { day, month }, index) => { const key = `${day}-${month}`; map.set(key, [...(map.get(key) || []), index]); return map; }, new Map).values()].filter(indices => indices.length > 1).map(indices => ({ err: "the same", index: indices })); console.log(duplicates);

我將使用Map構造函數來構建一個 map 由(唯一的)年月值鍵控,其中關聯的值是錯誤對象的 arrays,初始化為空index數組。 然后填充這些index arrays,並獲取具有多個條目的索引。 這不涉及reduce

 const example = [{ day: 5, month: 1, key: 1 },{ day: 5, month: 1, key: 2 },{ day: 3, month: 3, key: 3 },{ day: 5, month: 1, key: 4 },{ day: 3, month: 3, key: 5 },{ day: 11, month: 4, key: 6 }]; const map = new Map(example.map(o => [o.month * 100 + o.day, {err: "the same", index: []}] )); example.forEach((o, i) => map.get(o.month * 100 + o.day).index.push(i)); const dupes = Array.from(map.values()).filter(o => o.index.length > 1); console.log(dupes);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM