Python verfügt über eine integrierte Funktionenumerate
, um eine Iteration von (index, item)
Paaren zu erhalten.
Hat ES6 ein Äquivalent für ein Array? Was ist es?
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']
ES6-Äquivalent ohne enumerate
:
function elements_with_index(elements){
return elements.map(element => elements.indexOf(element) + ':' + element);
}
console.log(elements_with_index(['a','b']))
//[ '0:a', '1:b' ]
javascript
functional-programming
ecmascript-6
Guillaume Vincent
quelle
quelle
elements.map(( element, i ) => `${ i }:${ element }`);
elements.map((element,index) => index + ':' + element)
Antworten:
Ja, checkt aus
Array.prototype.entries()
.const foobar = ['A', 'B', 'C']; for (const [index, element] of foobar.entries()) { console.log(index, element); }
quelle
enumerate
als[].map()
es gibt einen Iterator zurück.filter
aber die Indizes beibehalten möchten , die Sie vor dem Filtern hatten.Array.prototype.map
gibt Ihnen bereits den Index als zweites Argument für die Rückrufprozedur ... Und er wird fast überall unterstützt.['a','b'].map(function(element, index) { return index + ':' + element; }); //=> ["0:a", "1:b"]
Ich mag auch ES6
['a','b'].map((e,i) => `${i}:${e}`) //=> ["0:a", "1:b"]
quelle
entries()
let array = [1, 3, 5]; for (let [index, value] of array.entries()) console.log(index + '=' + value);
quelle
Entschuldigen Sie, wenn ich unwissend bin (ein bisschen ein Neuling in JavaScript hier), aber können Sie nicht einfach verwenden
forEach
? z.B:function withIndex(elements) { var results = []; elements.forEach(function(e, ind) { results.push(`${e}:${ind}`); }); return results; } alert(withIndex(['a', 'b']));
Es gibt auch die Antwort von naomik, die besser zu diesem speziellen Anwendungsfall passt, aber ich wollte nur darauf hinweisen, dass sie
forEach
auch zur Rechnung passt.ES5 + wird unterstützt.
quelle
pythonic
bietet eineenumerate
Funktion, die auf allen iterablen Elementen und nicht nur auf Arrays funktioniert und einen Iterator wie Python zurückgibt :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
Offenlegung Ich bin Autor und Betreuer von Pythonic
quelle
pythonic
. Laut " Wie man kein Spammer ist" in der Hilfe von Stack Overflow: "Die Community hier neigt dazu, offene Eigenwerbung abzustimmen und als Spam zu kennzeichnen. Veröffentlichen Sie gute, relevante Antworten, und wenn es um einige (aber nicht alle) geht Ihr Produkt oder Ihre Website, das ist in Ordnung. Sie müssen jedoch Ihre Zugehörigkeit in Ihren Antworten offenlegen. "wie
Kyle
undShanoor
sagen ist Array.prototype.entries ()aber für Neulinge wie mich ist es schwer, seine Bedeutung vollständig zu verstehen.
Geben Sie hier ein verständliches Beispiel:
for(let curIndexValueList of someArray.entries()){ console.log("curIndexValueList=", curIndexValueList) let curIndex = curIndexValueList[0] let curValue = curIndexValueList[1] console.log("curIndex=", curIndex, ", curValue=", curValue) }
entspricht
python
Code:for curIndex, curValue in enumerate(someArray): print("curIndex=%s, curValue=%s" % (curIndex, curValue)) }
quelle