簡體   English   中英

如何從另一個對象數組更新一個對象數組中不存在的值?

[英]How to update values not present in one array of objects from another array of objects?

我有兩個包含大量數據的對象數組。 這兩個數組的結構類似這樣。

arr1 = [
  {x: 1, y: '2018-01-01'}, 
  {x: 2, y: '2018-01-02'},           
  {x: 3, y: '2018-01-03'},
  {x: 5, y: '2018-01-05'},
....
]
arr2 = [
  {x: 1, y: '2018-01-01'}, 
  {x: 2, y: '2018-01-02'},           
  {x: 3, y: '2018-01-03'},
  {x: 4, y: '2018-01-04'},
  {x: 5, y: '2018-01-05'},
  {x: 6, y: '2018-01-08'}
]

我要更新arr2 ,使其使用僅出現在arr1中的值更新對象數組,並刪除任何不在arr1中的值。 注意,我想更新原始的arr2而不返回新的數組。

我嘗試遍歷單個數組並刪除不存在但不走運的值。

您可以獲得一張地圖,並從頭開始進行迭代以拼接未知項或更新更改后的值。

 var arr1 = [{ x: 1, y: '2018-01-01x' }, { x: 2, y: '2018-01-02' }, { x: 3, y: '2018-01-03' }, { x: 5, y: '2018-01-05' }], arr2 = [{ x: 1, y: '2018-01-01' }, { x: 2, y: '2018-01-02' }, { x: 3, y: '2018-01-03' }, { x: 4, y: '2018-01-04' }, { x: 5, y: '2018-01-05' }, { x: 6, y: '2018-01-08' }], map = arr1.reduce((m, { x, y }) => m.set(x, y), new Map), i = arr2.length; while (i--) { if (map.has(arr2[i].x)) { if (map.get(arr2[i].x) !== arr2[i].y) { arr2[i].y = map.get(arr2[i].x); } } else { arr2.splice(i, 1); } } console.log(arr2); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

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

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