Python hat eine eingebaute Funktion enumerate
, um Iterationen 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' ]
Ja gibt es, check out Array.prototype.entries()
.
Array.prototype.map
gibt Ihnen bereits den Index als zweites Argument für die Rückrufprozedur ... Und es ist 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"]
let array = [1, 3, 5];
for (let [index, value] of array.entries())
console.log(index + '=' + value);
Entschuldigen Sie, wenn ich unwissend bin (ein Neuling von JavaScript hier), aber können Sie nicht einfach forEach
verwenden? 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 für diesen speziellen Anwendungsfall besser geeignet ist, aber ich wollte nur darauf hinweisen, dass forEach
auch die Rechnung passt.
ES5 + wird unterstützt.
Pythonic
bietet eine enumerate
-Funktion, die auf alle iterierbaren Elemente und nicht nur auf Arrays anwendbar ist und einen Generator (yield
) 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
wie Kyle
und Shanoor
ist Array.prototype.entries ()
aber für Neulinge wie mich ist es schwer zu verstehen, was sie bedeuten.
so hier ein verständliches Beispiel geben:
for(let curIndexValueList of someArray.entries()){
console.log("curIndexValueList=", curIndexValueList)
let curIndex = curIndexValueList[0]
let curValue = curIndexValueList[1]
console.log("curIndex=", curIndex, ", curValue=", curValue)
}
äquivalent zu python
code:
for curIndex, curValue in enumerate(someArray):
print("curIndex=%s, curValue=%s" % (curIndex, curValue))
}