Gui*_*ent 60 javascript functional-programming ecmascript-6
Python有一个内置函数enumerate
,可以获得一(index, item)
对可迭代的对.
ES6是否具有数组的等价物?它是什么?
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']
Run Code Online (Sandbox Code Playgroud)
ES6相当于没有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' ]
Run Code Online (Sandbox Code Playgroud)
Kyl*_*yle 49
是的,请查看Array.prototype.entries()
.
tav*_*tav 21
let array = [1, 3, 5];
for (let [index, value] of array.entries())
console.log(index + '=' + value);
Run Code Online (Sandbox Code Playgroud)
Tha*_*you 18
Array.prototype.map
已经给你一个指数作为第二个参数回调过程......而且它支持几乎无处不在.
['a','b'].map(function(element, index) { return index + ':' + element; });
//=> ["0:a", "1:b"]
Run Code Online (Sandbox Code Playgroud)
我也喜欢ES6
['a','b'].map((e,i) => `${i}:${e}`)
//=> ["0:a", "1:b"]
Run Code Online (Sandbox Code Playgroud)
对不起,如果我无知(这里是 JavaScript 的新手),但你不能只使用forEach
?例如:
function withIndex(elements) {
var results = [];
elements.forEach(function(e, ind) {
results.push(`${e}:${ind}`);
});
return results;
}
alert(withIndex(['a', 'b']));
Run Code Online (Sandbox Code Playgroud)
还有naomik 的答案更适合这个特定用例,但我只想指出这forEach
也符合要求。
支持 ES5+。
pythonic
提供了一个enumerate
适用于所有可迭代对象的函数,而不仅仅是数组,并返回一个Iterator,如 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
Run Code Online (Sandbox Code Playgroud)
披露我是 Pythonic 的作者和维护者
归档时间: |
|
查看次数: |
16617 次 |
最近记录: |