簡體   English   中英

從JavaScript中的多維數組中刪除特殊元素

[英]Remove special elements from multidimensional array in javascript

我的數組如下所示:

var my_array=[
  [[1,0], [2,2], [4,1]],
  [[4,9], [3,1], [4,2]],
  [[5,6], [1,5], [9,0]]
]

我想過濾上面的my_array並從上面的數組中刪除所有數組(例如[[4,9], [3,1], [4,2]] ),如果該數組的所有child arrays數組都沒有特定值(例如0 )位於1.位置( child array[1]

所以我的結果應該像這樣:

var result_array=[
  [[1,0], [2,0], [4,1]],
  [[5,6], [1,5], [9,0]]
]

參見上文:從my_array刪除第二個數組,因為第二個子數組在第一個索引處不包括0列。

我的想法是使用類似以下代碼的代碼,但我無法真正使其正常工作:

 var my_array=[ [[1,0], [2,2], [4,1]], [[4,9], [3,1], [4,2]], [[5,6], [1,5], [9,0]] ] result_array = my_array.filter(function(item){ return item[1] != 0 }) console.log(JSON.stringify(result_array)) 

一種簡單的方法是在外部數組的filter使用Array#some查找匹配我們條件的任何數組,並使用Array#includes (或在較舊的瀏覽器中為Array#indexOf ,與未找到的-1比較)在find回調中查看子數組是否包含0

在ES2015 +

 var my_array=[ [[1,0], [2,2], [4,1]], [[4,9], [3,1], [4,2]], [[5,6], [1,5], [9,0]] ]; var filtered = my_array.filter(middle => middle.some(inner => inner.includes(0))); console.log(filtered); 
 .as-console-wrapper { max-height: 100% !important; } 

或在ES5中:

 var my_array=[ [[1,0], [2,2], [4,1]], [[4,9], [3,1], [4,2]], [[5,6], [1,5], [9,0]] ]; var filtered = my_array.filter(function(middle) { return middle.some(function(inner) { return inner.indexOf(0) != -1; }); }); console.log(filtered); 
 .as-console-wrapper { max-height: 100% !important; } 

暫無
暫無

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

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