Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象数组上使用Array.map()_Javascript_Arrays - Fatal编程技术网

Javascript 在对象数组上使用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)时,它似乎已经工作了。但是,由于某

我试图使用Array.map对数组中每个对象的
description
属性进行切片

docs = docs.map(function(currentValue, index, array){
            currentValue['description'] = currentValue.description.slice(0,10);
            return array;
        });
当I
console.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