簡體   English   中英

合並/展平多維數組並刪除重復項 Javascript

[英]Merge/flatten multidimensional array and remove duplicates Javascript

我有一個多維數組,如下所示:

var workouts = [
  [0, Object, 0, 0, 0],
  [Object, 0, 0, 0, 0],
  [0, 0, 0, Object, 0]
];

我想展平/合並數組並刪除重復項。 結果應該是這樣的:

[Object, Object, 0, Object, 0]

可以表演嗎?

我的理解是,如果存在,您希望將第一個遇到的對象保留在給定列中。

你可以用.map().reduce()做到這一點:

 var workouts = [ [0, {id:1}, 0, 0, 0], [{id:2}, 0, 0, 0, 0], [0, 0, 0, {id:3}, 0] ]; var res = workouts.reduce(function(a, b) { return b.map(function(e, i) { return a[i] instanceof Object ? a[i] : e; }); }, []); console.log(JSON.stringify(res));

var workouts = [
  [0, {id:1}, 0, 0, 0],
  [{id:2}, 0, 0, 0, 0],
  [0, 0, 0, {id:3}, 0]
];

function flattenArray (array){
  var newArray = [];
  for (i=0; i<array.length; i++){
    var subArray = array[i];
    for (ii=0; ii<subArray.length; ii++){
      if (newArray.indexOf(subArray[ii]) == -1){
      newArray.push(subArray[ii]);
      }
    }
  }
  return newArray;
}
console.log(flattenArray(workouts));

http://codepen.io/anon/pen/WxLrqL

我會這樣做;

 var workouts = [[0, {a:1}, 0, 0, 0], [{b:2}, 0, 0, 0, 0], [0, 0, 0, {c:3}, 0] ], result = workouts.reduce((p,c) => p = c.map((e,i) => e || p[i] || 0 ),[]) console.log(result);

聚會遲到了,但我仍然想利用:

這是代碼和非常鼓舞人心的帖子12

 const myArray = [ [0, {id:1}, 0, 0, 0], [{id:2}, 0, 0, 0, 0], [0, 0, 0, {id:2}, 0] ] const myFlatArray = myArray.flat() const result = [...new Set(myFlatArray.map(JSON.stringify))].map(JSON.parse) console.log(JSON.stringify(result))

注意:此解決方案必須支持 ES6

暫無
暫無

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

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