2017-11-26 5 views
0

私の配列はこのようになります多次元配列からの特別な要素を削除します。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]])配列上からIFのすべてのchild arrays

var result_array=[ 
    [[1,0], [2,0], [4,1]], 
    [[5,6], [1,5], [9,0]] 
] 
:配列は、だから私の結果は次のようになります。1.位置( child array[1]

での具体的な値(例えば0)を持っていません

上記参照:2番目の子配列には最初のインデックスに0列が含まれていないため、my_arrayから2番目の配列を削除します。

私の考えでは、このコードのようなものを使用することでしたが、私は本当にそれが働いて得ることができません。

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))

+0

あなたは、子の配列を何と呼びますか? – Mihai

+0

たとえば、[[4,9] 'これ! – Jonas0000

答えて

1

簡単な方法は、filter上でArray#someを使用することです外側の配列がその条件に一致する配列を見つけ、Array#includes(または古いブラウザではArray#indexOf、見つからない場合は-1と比較)を使用して、findのコールバックで子配列に0が含まれている場合はeeを返します。 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; 
 
}

+0

上記の 'Array#find'が見えたら、refreshを押してください。 '#some'でなければなりません。 –

+0

OPが中間配列の位置特定テストを望んでいると考えてください – charlietfl

+0

@charlietfl:ありがとうございますが、明らかにOPは答えを受け入れています。 –