Javascript 从数组中提取对象以创建另一个数组
我有一个数组,里面有多个对象,如下所示Javascript 从数组中提取对象以创建另一个数组,javascript,node.js,Javascript,Node.js,我有一个数组,里面有多个对象,如下所示 [{ DishId: 40, DishName: "Mango", TimeSpan: 98}, { DishId: 41, DishName: "Banana", TimeSpan: 99}, { DishId: 42, DishName: "Orange", TimeSpan: 100}] 我想从中提取DishId和DishName并创建另一个对象数组,如下所示: 预期产出: [{ D
[{ DishId: 40, DishName: "Mango", TimeSpan: 98},
{ DishId: 41, DishName: "Banana", TimeSpan: 99},
{ DishId: 42, DishName: "Orange", TimeSpan: 100}]
我想从中提取DishId和DishName并创建另一个对象数组,如下所示:
预期产出:
[{ DishId: 40, DishName: "Mango"},
{ DishId: 41, DishName: "Banana"},
{ DishId: 42, DishName: "Orange"}]
我在下面做什么
allDishes =
[{ DishId: 40, DishName: "Mango", TimeSpan: 98},
{ DishId: 41, DishName: "Banana", TimeSpan: 99},
{ DishId: 42, DishName: "Orange", TimeSpan: 100}];
var dishes = {};
var dishesArray = [];
for(i = 0; i < allDishes.length; i++){
dishes.DishId= allDishes[i].DishId;
dishes.DishName = allDishes[i].DishName;
dishesArray.push(dishes);
}
您正在重用
碟子
对象,因此在接下来的迭代中,您将覆盖在前面的迭代中所做的更改。您所需要做的就是每次在循环中声明一个新对象,更改其属性,然后将其推送到数组中
如果您想了解为什么不能重用同一个对象,请研究“对象在JavaScript中作为引用传递”,您将发现大量信息
const alldisks=[{//已更改
迪希德:40,
名称:“芒果”,
时间跨度:98
},
{
迪希德:41,
名称:“香蕉”,
时间跨度:99
},
{
迪希德:42,
名称:“橙色”,
时间跨度:100
}
];
常数dishesArray=[];//改变
对于(设i=0;i 控制台日志(dishesArray)代码>当您在循环外部创建碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟形碟。在我下面的示例中,我在每个循环中重新初始化碟子
,以生成一个新的引用
我的代码与您的代码相同,只是在初始化碟子的地方不同
alldisplays=
[{DishId:40,DishName:“Mango”,TimeSpan:98},
{DishId:41,DishName:“香蕉”,TimeSpan:99},
{DishId:42,DishName:“橙色”,TimeSpan:100}];
var dishesArray=[];
对于(i=0;i 控制台日志(dishesArray)代码>您可以直接使用数组的map属性作为
let dishesArray = allDishes.map(dish => dish = {DishId : dish.DishId, DishName: dish.DishName })
哇,这是一个简单而快速的解决方案!
let dishesArray = allDishes.map(dish => dish = {DishId : dish.DishId, DishName: dish.DishName })