it-swarm.com.de

Was ist das ES6-Äquivalent von Python für eine Sequenz?

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' ]
42

Ja gibt es, check out Array.prototype.entries() .

31
Kyle

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"]
12
user633183

let array = [1, 3, 5];
for (let [index, value] of array.entries()) 
     console.log(index + '=' + value);

6
tav

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.

3
James Ko

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
1
Keyvan

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))
}
0
crifan