数组的JavaScript对象属性

数组的JavaScript对象属性,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我的目标如下: const电影={ 1: { id:1, 名称:“地球”, }, 2: { id:2, 姓名:'塞尔玛', }, 3: { id:3, 名字:“百万美元宝贝”, }, 4: { id:4, 名字:“阿甘正传”, }, 5: { id:5, 姓名:“滚出去”, }, }; 然后我想要一个只有属性id的数组。为此,我尝试了以下方法: const moviesrarray=Object.values(电影); const-idArray=moviesArray.map(movie=>

我的目标如下:

const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
然后我想要一个只有属性id的数组。为此,我尝试了以下方法:

const moviesrarray=Object.values(电影);
const-idArray=moviesArray.map(movie=>Object.values(movie)[0]);
控制台日志(idArray);

它正确地打印了
idArray
,但我的问题是,我是否缺少解决此问题的方法

您可以直接使用
id
属性:

const
电影={1:{id:1,名字:'Planet Earth'},2:{id:2,名字:'Selma'},3:{id:3,名字:'Million Dollar Baby'},4:{id:4,名字:'Forrest Gump'},5:{id:5,名字:'Get Out'},
moviesArray=Object.values(电影),
idArray=moviesArray.map(movie=>movie.id);

控制台日志(idArray)
您可以直接使用
id
属性:

const
电影={1:{id:1,名字:'Planet Earth'},2:{id:2,名字:'Selma'},3:{id:3,名字:'Million Dollar Baby'},4:{id:4,名字:'Forrest Gump'},5:{id:5,名字:'Get Out'},
moviesArray=Object.values(电影),
idArray=moviesArray.map(movie=>movie.id);
控制台日志(idArray)
const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
const moviesrarray=Object.values(电影);
const-idArray=moviesArray.map(movie=>movie.id);
控制台日志(idArray)
const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
const moviesrarray=Object.values(电影);
const-idArray=moviesArray.map(movie=>movie.id);

控制台日志(idArray)
我认为这里的
映射部分不需要使用
Object.values
。如果没有它,情况也会一样:

const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
const moviesrarray=Object.values(电影);
const-idArray=moviesArray.map(movie=>movie);

console.log(moviesrarray)
我认为这里的
映射部分不需要使用
Object.values
。如果没有它,情况也会一样:

const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
const moviesrarray=Object.values(电影);
const-idArray=moviesArray.map(movie=>movie);

console.log(moviesrarray)可能是您可以使用更多的核心版本。 在我的解决方案中,循环只运行一次

const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
常数=[];
为了(让我看电影){
推送(电影[i].id);
}

控制台日志(idArray)可能是您可以使用更多的核心版本。 在我的解决方案中,循环只运行一次

const电影={
1: {
id:1,
名称:“地球”,
},
2: {
id:2,
姓名:'塞尔玛',
},
3: {
id:3,
名字:“百万美元宝贝”,
},
4: {
id:4,
名字:“阿甘正传”,
},
5: {
id:5,
姓名:“滚出去”,
},
};
常数=[];
为了(让我看电影){
推送(电影[i].id);
}

控制台日志(idArray)movie=>movie.id
作为映射器函数,而不是
movie=>Object.values(movie)[0]


当前函数的问题在于,它假定
id
总是碰巧是
对象.values
返回的数组中的第一个属性。对于您当前编写的函数,这恰好是正确的,但我不确定您是否能够在一般情况下保证这一点。即使属性的顺序不同,直接引用
movie.id
也有效。它也应该快一点,因为您不必每次都将eaxh单个对象转换为数组。

在这种情况下,我更倾向于使用
movie=>movie.id
作为映射器函数,而不是
movie=>object.values(movie)[0]


当前函数的问题在于,它假定
id
总是碰巧是
对象.values
返回的数组中的第一个属性。对于您当前编写的函数,这恰好是正确的,但我不确定您是否能够在一般情况下保证这一点。即使属性的顺序不同,直接引用
movie.id
也有效。它也应该快一点,因为您不必每次都将eaxh单个对象转换为数组。

object.keys(movies)
object.values(movies).map(movie=>movie.id)
是否有理由将对象存储在以数字作为属性的对象中?将其存储在数组中更合适。Object.key(movies)
Object.values(movies.map(movie=>movie.id)
是否有理由将对象存储在对象中