如何在不遍历数组的情况下提取对象数组中特定键的值?
How to extract Values of particular key in an object array without iterating over the array?
假设我有一个对象数组调用 movies,如下所示。
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 rest/spread feature 来实现吗?
不,如果不循环遍历数组就无法执行此操作。不,rest/spread 无济于事。
您说过您正在使用 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));
不,传播不能做到这一点。
您可以将 map 与参数解构结合起来:
list.map(({ title }) => title)
或者您可以使用 lodash/map
,它有一个 shorthand 用于您的用例:
import { map } from 'lodash'
map(list, 'title')
并且使用 lodash/fp
,您甚至可以在其他地方重用您的函数 :D
import { map } from 'lodash/fp'
const getTitles = map('title')
getTitles(list)
假设我有一个对象数组调用 movies,如下所示。
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 rest/spread feature 来实现吗?
不,如果不循环遍历数组就无法执行此操作。不,rest/spread 无济于事。
您说过您正在使用 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));
不,传播不能做到这一点。 您可以将 map 与参数解构结合起来:
list.map(({ title }) => title)
或者您可以使用 lodash/map
,它有一个 shorthand 用于您的用例:
import { map } from 'lodash'
map(list, 'title')
并且使用 lodash/fp
,您甚至可以在其他地方重用您的函数 :D
import { map } from 'lodash/fp'
const getTitles = map('title')
getTitles(list)