Python tem uma função embutidaenumerate
, para obter um iterável de (index, item)
pares.
O ES6 tem um equivalente para um array? O que é isso?
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 equivalente sem 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
fonte
fonte
elements.map(( element, i ) => `${ i }:${ element }`);
elements.map((element,index) => index + ':' + element)
Respostas:
Sim, há, verifique
Array.prototype.entries()
.const foobar = ['A', 'B', 'C']; for (const [index, element] of foobar.entries()) { console.log(index, element); }
fonte
enumerate
do[].map()
que retorna um iterador.filter
mas manter os índices que tinha antes de filtrar.Array.prototype.map
já fornece o índice como o segundo argumento para o procedimento de retorno de chamada ... E é suportado em quase todos os lugares.['a','b'].map(function(element, index) { return index + ':' + element; }); //=> ["0:a", "1:b"]
Eu gosto de ES6 também
['a','b'].map((e,i) => `${i}:${e}`) //=> ["0:a", "1:b"]
fonte
entries()
let array = [1, 3, 5]; for (let [index, value] of array.entries()) console.log(index + '=' + value);
fonte
Desculpe-me se estou sendo ignorante (um pouco novato em JavaScript aqui), mas você não pode simplesmente usar
forEach
? por exemplo:function withIndex(elements) { var results = []; elements.forEach(function(e, ind) { results.push(`${e}:${ind}`); }); return results; } alert(withIndex(['a', 'b']));
Também há a resposta de naomik, que se encaixa melhor neste caso de uso específico, mas eu só queria ressaltar que
forEach
também se encaixa no projeto.ES5 + com suporte.
fonte
pythonic
oferece umaenumerate
função que funciona em todos os iteráveis, não apenas arrays, e retorna um Iterator , como 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
Divulgação Sou autor e mantenedor do Pythonic
fonte
pythonic
. De acordo com How to not be a spammer no Help Center do Stack Overflow, "A comunidade aqui tende a votar contra a autopromoção aberta e sinalizá-la como spam. Publique respostas boas e relevantes e se algumas (mas não todas) forem sobre seu produto ou site, tudo bem. No entanto, você deve divulgar sua afiliação em suas respostas. "como
Kyle
eShanoor
dizer é Array.prototype.entries ()mas para novatos como eu, é difícil entender totalmente o seu significado.
então dê um exemplo compreensível:
for(let curIndexValueList of someArray.entries()){ console.log("curIndexValueList=", curIndexValueList) let curIndex = curIndexValueList[0] let curValue = curIndexValueList[1] console.log("curIndex=", curIndex, ", curValue=", curValue) }
equivalente ao
python
código:for curIndex, curValue in enumerate(someArray): print("curIndex=%s, curValue=%s" % (curIndex, curValue)) }
fonte