Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数组中提取对象以创建另一个数组_Javascript_Node.js - Fatal编程技术网

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 })