2016-08-31 13 views
-1

indexOf()は、一致する要素のインデックスを1つだけ与えますが、JavaScriptで一致する要素のインデックスをすべて見つける方法はありますか?配列要素の複数のインデックスを取得する方法

+0

要素が一つだけのインデックス(すなわち。その兄弟に対して)を持っているので、私はあなたが求めているのかわからないんだけど。 –

+0

@Bettyを詳しく説明できますか?プレーンなJavaScript配列について話していますか? –

+0

@RoryMcCrossan、彼は '[1,2,3,1] .indexOf(1)'を意味します –

答えて

1
Array.prototype.indexesOf = function(el) { 
    var ret = []; 
    var ix = 0; 
    while (true) { 
     ix = this.indexOf(el, ix); 
     if (ix === -1) break; 
     ret.push(ix); 
    } 
    return ret; 
}; 

、その後

[1,2,3,1].indexesOf(1) 

[0,3]を返す必要があります。

+0

私はちょうど 'if(ix <0)' – Vasan

+1

を使用しませんでした。 http://www.w3schools.com/jsref/jsref_indexof_array.asp –

0

私は次のようにします。

Array.prototype.indicesOf = function(x){ 
 
    return this.reduce((p,c,i) => c === x ? p.concat(i) : p ,[]); 
 
}; 
 

 
var arr = [1,2,3,4,1,8,7,6,5]; 
 
console.log(arr.indicesOf(1)); 
 
console.log(arr.indicesOf(5)); 
 
console.log(arr.indicesOf(42));

関連する問題