Javascript 在Lodash.js/下划线.js中,如何为每个元素添加索引?

Javascript 在Lodash.js/下划线.js中,如何为每个元素添加索引?,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,以下是输入: [{animal: "cat"}, {animal:"dog}} 其结果是: [{animal: "cat", idx: 1}, {animal: "dog", idx: 2}] 有人知道如何在Lodash/underline.js中这样做吗?在underline: var data = [{animal: "cat"}, {animal:"dog"}] _.map(data, function(e, i) { return _.extend(e, {idx: i +

以下是输入:

[{animal: "cat"}, {animal:"dog}}
其结果是:

[{animal: "cat", idx: 1}, {animal: "dog", idx: 2}]

有人知道如何在Lodash/underline.js中这样做吗?

在underline:

var data =  [{animal: "cat"}, {animal:"dog"}]

_.map(data, function(e, i) {
  return _.extend(e, {idx: i + 1});
});
您可以使用.map.each对目标数组中要添加索引的每个元素进行迭代。然后,您可以使用\uu.extend添加“idx”道具

工作示例:

var data =  [{animal: "cat"}, {animal:"dog"}]

_.map(data, function(e, i) {
  return _.extend(e, {idx: i + 1});
});

在元素之间循环,向每个元素添加索引

_.each(data, function(elt, i) { elt.idx = i + 1; })

.map(输入,函数(x,i){return}.extend({idx:i},x);})
?我一点也不明白。我猜
select
filter
的旧名称,但是您的filter函数总是返回一个真实的值,因此所有项目都将被选中,您将以开始时的内容结束。@torazaburo您是正确的,因为OP希望从1开始索引。更新了我的答案。使用
map()
时,最好不要对集合中的每个项目进行变异。我会将其更改为
return.extend({idx:I+1},e)
var newAnimals = _.map(animals, function(animal, index){
    animal.idx = index + 1;
    return animal;
})