Python tiene una función incorporadaenumerate
para obtener un iterable de (index, item)
pares.
¿ES6 tiene un equivalente para una matriz? ¿Qué 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']
Equivalente a ES6 sin 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
fuente
fuente
elements.map(( element, i ) => `${ i }:${ element }`);
elements.map((element,index) => index + ':' + element)
Respuestas:
Sí lo hay, echa un vistazo
Array.prototype.entries()
.const foobar = ['A', 'B', 'C']; for (const [index, element] of foobar.entries()) { console.log(index, element); }
fuente
enumerate
que[].map()
, devuelve un iterador.filter
pero mantener los índices que tenía antes de filtrar.Array.prototype.map
ya le da el índice como segundo argumento para el procedimiento de devolución de llamada ... Y es compatible en casi todas partes.['a','b'].map(function(element, index) { return index + ':' + element; }); //=> ["0:a", "1:b"]
También me gusta ES6
['a','b'].map((e,i) => `${i}:${e}`) //=> ["0:a", "1:b"]
fuente
entries()
let array = [1, 3, 5]; for (let [index, value] of array.entries()) console.log(index + '=' + value);
fuente
Disculpe si estoy siendo ignorante (un poco novato en JavaScript aquí), pero ¿no puede simplemente usarlo
forEach
? p.ej:function withIndex(elements) { var results = []; elements.forEach(function(e, ind) { results.push(`${e}:${ind}`); }); return results; } alert(withIndex(['a', 'b']));
También está la respuesta de naomik, que se adapta mejor a este caso de uso en particular, pero solo quería señalar que
forEach
también se ajusta a los requisitos.Compatible con ES5 +.
fuente
pythonic
ofrece unaenumerate
función que funciona en todos los iterables, no solo en matrices, y devuelve un iterador , 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
Divulgación Soy autor y mantenedor de Pythonic
fuente
pythonic
. De acuerdo con Cómo no ser un spammer en el Centro de ayuda de Stack Overflow, "La comunidad aquí tiende a rechazar la autopromoción abierta y marcarla como spam. Publica respuestas buenas y relevantes, y si algunas (pero no todas) son sobre su producto o sitio web, está bien. Sin embargo, debe revelar su afiliación en sus respuestas " .como
Kyle
yShanoor
decir es Array.prototype.entries ()pero para los novatos como yo, es difícil entender completamente su significado.
así que aquí da un ejemplo comprensible:
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 al
python
código:for curIndex, curValue in enumerate(someArray): print("curIndex=%s, curValue=%s" % (curIndex, curValue)) }
fuente