Pythonには、(index, item)
ペアの反復可能を取得するための 組み込み関数enumerate
があります。
ES6にはアレイに相当するものがありますか?それは何ですか?
def elements_with_index(elements):
modified_elements = []
for i, element in enumerate(elements):
modified_elements.append("%d:%s" % (i, element))
return modified_elements
print(elements_with_index(["a","b"]))
#['0:a', '1:b']
enumerate
なしのES6同等物:
function elements_with_index(elements){
return elements.map(element => elements.indexOf(element) + ':' + element);
}
console.log(elements_with_index(['a','b']))
//[ '0:a', '1:b' ]
はい、あります。チェックアウト Array.prototype.entries()
。
Array.prototype.map
は、すでにコールバックプロシージャの2番目の引数としてインデックスを提供しています...そして、ほとんどすべての場所で サポート です。
['a','b'].map(function(element, index) { return index + ':' + element; });
//=> ["0:a", "1:b"]
私もES6が好きです
['a','b'].map((e,i) => `${i}:${e}`)
//=> ["0:a", "1:b"]
let array = [1, 3, 5];
for (let [index, value] of array.entries())
console.log(index + '=' + value);
私が無知である場合はすみません(ここではJavaScriptの初心者)が、forEach
だけを使用することはできませんか?例えば:
function withIndex(elements) {
var results = [];
elements.forEach(function(e, ind) {
results.Push(`${e}:${ind}`);
});
return results;
}
alert(withIndex(['a', 'b']));
naomik's という回答もあり、これはこの特定のユースケースにより適していますが、forEach
も法案に適合することを指摘したかっただけです。
ES5 +がサポートされています。
Pythonic
は、配列だけでなくすべての反復可能要素で機能するenumerate
関数を提供し、pythonのように Iterator を返します。
import {enumerate} from 'Pythonic';
const arr = ['a', 'b'];
for (const [index, value] of enumerate(arr))
console.log(`index: ${index}, value: ${value}`);
// index: 0, value: a
// index: 1, value: b
Disclosure私はPythonicの著者であり、メンテナーです
Kyle
およびShanoor
sayは Array.prototype.entries()
しかし、私のような初心者にとっては、その意味を完全に理解するのは困難です。
わかりやすい例を以下に示します。
for(let curIndexValueList of someArray.entries()){
console.log("curIndexValueList=", curIndexValueList)
let curIndex = curIndexValueList[0]
let curValue = curIndexValueList[1]
console.log("curIndex=", curIndex, ", curValue=", curValue)
}
python
コードと同等:
for curIndex, curValue in enumerate(someArray):
print("curIndex=%s, curValue=%s" % (curIndex, curValue))
}