以下是输入内容:
[{animal: "cat"}, {animal:"dog}}
输出将会是:
[{animal: "cat", idx: 1}, {animal: "dog", idx: 2}]
有人有在Lodash/Underscore.js中如何实现这个的想法吗?
以下是输入内容:
[{animal: "cat"}, {animal:"dog}}
[{animal: "cat", idx: 1}, {animal: "dog", idx: 2}]
有人有在Lodash/Underscore.js中如何实现这个的想法吗?
在Underscore中:
您可以使用.map或.each来迭代目标数组中的每个元素,以添加索引。然后,您可以使用_.extend来添加“idx”属性。
工作示例:
var data = [{animal: "cat"}, {animal:"dog"}]
_.map(data, function(e, i) {
return _.extend(e, {idx: i + 1});
});
map()
时,最好不要改变集合中的每个项目。我会将其更改为 return _.extend({ idx: i + 1 }, e)
。 - Adam Boduchvar data = [{animal: "cat"}, {animal:"dog"}, {animal:"er"}];
var data2 = _.select(data,function(val, key){
return {val, idx : key};
});
select
是filter
的旧称,但你的过滤函数总是返回一个真值,所以所有的项目都会被选中,最终得到的结果与开始时相同。 - user663031循环遍历元素,将索引添加到每个元素中。
_.each(data, function(elt, i) { elt.idx = i + 1; })
var newAnimals = _.map(animals, function(animal, index){
animal.idx = index + 1;
return animal;
})