Javascript 在对象数组上使用Array.map()
我试图使用Array.map对数组中每个对象的Javascript 在对象数组上使用Array.map(),javascript,arrays,Javascript,Arrays,我试图使用Array.map对数组中每个对象的description属性进行切片 docs = docs.map(function(currentValue, index, array){ currentValue['description'] = currentValue.description.slice(0,10); return array; }); 当Iconsole.log(docs)时,它似乎已经工作了。但是,由于某
description
属性进行切片
docs = docs.map(function(currentValue, index, array){
currentValue['description'] = currentValue.description.slice(0,10);
return array;
});
当Iconsole.log(docs)
时,它似乎已经工作了。但是,由于某些原因,我无法再访问这些属性
console.log(docs[0].description); //undefined
似乎我已经将我的对象数组变成了一个字符串数组,这些字符串似乎是对象。有什么想法吗
docs = docs.map(function(currentValue, index, array){
docs[index]['description'] = currentValue.description.slice(0,10);
return array;
});
我认为应该是这样的。这是因为您在map中返回
数组
,而不是当前值
。
应该是
docs = docs.map(function(currentValue, index, array){
currentValue['description'] = currentValue.description.slice(0,10);
return currentValue;
});
在这种情况下,您需要使用的不是数组中的项,因为您没有对数组中的项进行任何转换
docs.forEach(function(currentValue, index, array){
currentValue['description'] = currentValue.description.slice(0,10);
});
用于转换数组中的每个项并返回一个新对象,因为在您的情况下,您只是更改每个项的属性,不需要使用它。map中的回调不应返回数组中的特定项所需的新值
docs = docs.map(function(item){
item.description = item.description.slice(0, 10);
return item;
});
如果您所做的只是转换数组中的每个项,那么使用.forEach
会更有效.map
创建一个全新的数组,而.forEach
只是在现有数组中循环。它还需要更少的代码
docs.forEach(function(item){
item.description = item.description.slice(0, 10);
});
在这种情况下,您需要使用的是
each
而不是map()
,因为您没有对arrayWorks中的项目进行任何转换对我来说很好-Firefox 43.0.3->@rockerest:它起作用了,因为您没有将map
返回的垃圾数组分配回文档中,因此,它最终相当于一个forEach
循环(它只是创建了临时数组并将其丢弃)。啊,是的,对不起。我在填写问题中缺失的信息时对代码进行了修改。它对我不起作用:)Array.prototype.forEach()
?我认为作者需要保存更改后的文档
,所以他使用了.map