javascript - 如何在不迭代数组的情况下提取对象数组中特定键的值?

标签 javascript arrays ecmascript-6 array-map

假设我有一个对象数组调用电影,如下所示。

movies = [{ id : 1,title : 'Black Panther'},{ id : 2,title : 'Avengers'},{ id : 1,title : 'Justice League'},{ id : 4,title : 'Infinity War'},{ id : 5,title : 'Spider man'}]

我是否可以从每个对象中提取特定键的值?就像这个 titles 数组一样。

titles = ['Black Panther','Avengers','Justice League','Infinity War','Spider Man']

目前我正在使用 map 函数来完成此操作。有没有其他方法可以在不迭代每个对象的情况下实现此目的。这可以使用 ES6 休息/传播功能 来实现吗?

最佳答案

不,如果不循环数组就无法执行此操作。不,休息/拉伸(stretch)不会有帮助。

您说过您正在使用map,这可能是最简单的方法:

titles = movies.map(e => e.title);

const movies = [{ id : 1,title : 'Black Panther'},{ id : 2,title : 'Avengers'},{ id : 1,title : 'Justice League'},{ id : 4,title : 'Infinity War'},{ id : 5,title : 'Spider man'}];
const titles = movies.map(e => e.title);
console.log(JSON.stringify(titles));

或者通过解构:

titles = movies.map(({title}) => title);

const movies = [{ id : 1,title : 'Black Panther'},{ id : 2,title : 'Avengers'},{ id : 1,title : 'Justice League'},{ id : 4,title : 'Infinity War'},{ id : 5,title : 'Spider man'}];
const titles = movies.map(({title}) => title);
console.log(JSON.stringify(titles));

您还可以使用for-of:

titles = [];
for (const {title} of movies) {
    titles.push(title);
}

const movies = [{ id : 1,title : 'Black Panther'},{ id : 2,title : 'Avengers'},{ id : 1,title : 'Justice League'},{ id : 4,title : 'Infinity War'},{ id : 5,title : 'Spider man'}];
const titles = [];
for (const {title} of movies) {
    titles.push(title);
}
console.log(JSON.stringify(titles));

关于javascript - 如何在不迭代数组的情况下提取对象数组中特定键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49208311/

相关文章:

javascript - 如何比较两个数组对象并从一个数组对象中删除匹配的对象

javascript - 将数组转为对象

c - 访问二维晶格 C 中的元素

javascript - Babel CLI 引用错误 : regeneratorRuntime is not defined

css - 错误无法使用 webpack 找到模块

javascript - Node ExpressJS |如何通过自定义查询参数验证

javascript - jstree select_node.jstree 未触发

javascript - jQuery:创建一个循环,首先需要一个时间间隔,然后更改为另一个时间间隔

javascript - 创建不连续的滚动框并测量每个部分的时间

javascript - 带百分比的随机数