Python ma wbudowaną funkcjęenumerate
, która umożliwia uzyskanie iterowalnych (index, item)
par.
Czy ES6 ma odpowiednik dla tablicy? Co to jest?
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']
Odpowiednik ES6 bez 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
źródło
źródło
elements.map(( element, i ) => `${ i }:${ element }`);
elements.map((element,index) => index + ':' + element)
Odpowiedzi:
Tak jest, sprawdź
Array.prototype.entries()
.const foobar = ['A', 'B', 'C']; for (const [index, element] of foobar.entries()) { console.log(index, element); }
źródło
enumerate
niż[].map()
zwraca iterator.filter
ale zachowaj indeksy, które miałeś przed filtrowaniem.Array.prototype.map
już podaje indeks jako drugi argument procedury wywołania zwrotnego ... I jest obsługiwany prawie wszędzie.['a','b'].map(function(element, index) { return index + ':' + element; }); //=> ["0:a", "1:b"]
ES6 też lubię
['a','b'].map((e,i) => `${i}:${e}`) //=> ["0:a", "1:b"]
źródło
entries()
let array = [1, 3, 5]; for (let [index, value] of array.entries()) console.log(index + '=' + value);
źródło
Przepraszam, jeśli jestem ignorantem (trochę nowicjuszem w JavaScript), ale czy nie możesz po prostu użyć
forEach
? na przykład:function withIndex(elements) { var results = []; elements.forEach(function(e, ind) { results.push(`${e}:${ind}`); }); return results; } alert(withIndex(['a', 'b']));
Jest też odpowiedź Naomika, która lepiej pasuje do tego konkretnego przypadku użycia, ale chciałem tylko zaznaczyć, że
forEach
również pasuje do rachunku.Obsługiwany ES5 +.
źródło
pythonic
oferujeenumerate
funkcję, która działa na wszystkich iterowalnych elementach, nie tylko na tablicach, i zwraca Iterator , jak python: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
Ujawnienie Jestem autorem i opiekunem Pythonic
źródło
pythonic
. Zgodnie z artykułem How to not a spammer w Centrum pomocy Stack Overflow: „Społeczność ma tendencję do odrzucania jawnej autopromocji i oznaczania jej jako spamu. Publikuj dobre, trafne odpowiedzi, a jeśli niektóre (ale nie wszystkie) dotyczą Twój produkt lub witryna, nic nie szkodzi. Jednak w odpowiedziach musisz ujawnić swoje powiązanie. ”jak
Kyle
iShanoor
powiedz, to Array.prototype.entries ()ale dla początkujących, takich jak ja, trudno jest w pełni zrozumieć jego znaczenie.
więc tutaj podaj zrozumiały przykład:
for(let curIndexValueList of someArray.entries()){ console.log("curIndexValueList=", curIndexValueList) let curIndex = curIndexValueList[0] let curValue = curIndexValueList[1] console.log("curIndex=", curIndex, ", curValue=", curValue) }
odpowiednik
python
kodu:for curIndex, curValue in enumerate(someArray): print("curIndex=%s, curValue=%s" % (curIndex, curValue)) }
źródło