我有以下对象:
const movies = {
1: {
id: 1,
name: 'Planet Earth',
},
2: {
id: 2,
name: 'Selma',
},
3: {
id: 3,
name: 'Million Dollar Baby',
},
4: {
id: 4,
name: 'Forrest Gump',
},
5: {
id: 5,
name: 'Get Out',
},
};然后我想要一个只包含属性id的数组。为了做到这一点,我尝试了一些类似的方法:
const moviesArray = Object.values(movies);
const idArray = moviesArray.map(movie => Object.values(movie)[0]);
console.log(idArray);它可以正确地打印idArray,但我的问题是,我是否缺少解决此问题的方法。
发布于 2019-01-10 20:24:31
您可以直接使用id属性:
const
movies = { 1: { id: 1, name: 'Planet Earth' }, 2: { id: 2, name: 'Selma' }, 3: { id: 3, name: 'Million Dollar Baby' }, 4: { id: 4, name: 'Forrest Gump' }, 5: { id: 5, name: 'Get Out' } },
moviesArray = Object.values(movies),
idArray = moviesArray.map(movie => movie.id);
console.log(idArray);
发布于 2019-01-10 20:26:43
const movies = {
1: {
id: 1,
name: 'Planet Earth',
},
2: {
id: 2,
name: 'Selma',
},
3: {
id: 3,
name: 'Million Dollar Baby',
},
4: {
id: 4,
name: 'Forrest Gump',
},
5: {
id: 5,
name: 'Get Out',
},
};
const moviesArray = Object.values(movies);
const idArray = moviesArray.map(movie => movie.id);
console.log(idArray);
发布于 2019-01-10 20:33:04
在这种情况下,我更倾向于使用movie => movie.id作为映射器函数,而不是movie => Object.values(movie)[0]。
当前函数的问题是,它假设id总是Object.values返回的数组中的第一个属性。对于您当前编写的函数,这恰好是真的,但我不确定在一般情况下您是否一定能保证这一点。即使属性的顺序不同,直接引用movie.id也是有效的。它也应该更快一点,因为你不必每次都把eaxh单个对象转换成一个数组。
https://stackoverflow.com/questions/54128643
复制相似问题