假设我有一个像下面的对象阵列电话电影。
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 = ['Black Panther','Avengers','Justice League','Infinity War','Spider Man']
目前我正在使用map
功能进行此操作。有没有其他方法可以实现这一点,而无需迭代每个对象。可以使用 ES6休息/传播功能来实现吗?
答案 0 :(得分:5)
不,如果不循环遍历数组,就无法做到这一点。不,休息/传播不会有帮助。
您已经说过您正在使用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));

答案 1 :(得分:1)
不,传播无法做到。 你可以将地图与参数解构结合起来:
list.map(({ title }) => title)
或者您可以使用lodash/map
,其中包含您的用例的简写:
import { map } from 'lodash'
map(list, 'title')
使用lodash/fp
,您甚至可以在其他地方重复使用您的功能:D
import { map } from 'lodash/fp'
const getTitles = map('title')
getTitles(list)