传递枚举的项-JavaScript

传递枚举的项-JavaScript,javascript,arrays,enums,Javascript,Arrays,Enums,我是javascript新手。我将以下代码放在一起,以获取枚举中的一个项,将其推送到数组中,然后从数组中读回。由于某些原因,我推送到数组的内容与读取数组时得到的内容不同。我可以想出一些理论来解释它是如何发生的,比如当我将一个元素从enum推送到数组中时,如果该元素是数组中唯一的元素,那么当它被读回时,它将被解释为enum中的第一个元素,但我希望能更好地解释这是如何发生的:下面是我的代码: var dataEnum={ 0:{Name:“A”,Number:“1”}, 1:{姓名:“B”,号码:

我是javascript新手。我将以下代码放在一起,以获取枚举中的一个项,将其推送到数组中,然后从数组中读回。由于某些原因,我推送到数组的内容与读取数组时得到的内容不同。我可以想出一些理论来解释它是如何发生的,比如当我将一个元素从enum推送到数组中时,如果该元素是数组中唯一的元素,那么当它被读回时,它将被解释为enum中的第一个元素,但我希望能更好地解释这是如何发生的:下面是我的代码:

var dataEnum={
0:{Name:“A”,Number:“1”},
1:{姓名:“B”,号码:“2”},
2:{姓名:“C”,编号:“3”},
3:{姓名:“D”,编号:“4”},
4:{姓名:“E”,号码:“5”}
};
var dataArray=[];
for(数据枚举中的变量x){
if(数据枚举[x]。编号=“3”){
dataArray.push(x);
console.log(“名为“+dataEnum[x].name+”和编号为“+dataEnum[x].number+”的对象“+x+”被推送到数组中”);
//结果:
//名为C、编号为3的对象2被推送到数组中
}
}
for(数据数组中的变量y){
console.log(“从数组中读取了名为“+dataEnum[y].name+”和编号为“+dataEnum[y].number+”的对象“+y+”);
//结果:
//已从数组中读取名称为A、编号为1的对象0

}
您可以使用一些高阶函数来简化:

const dataEnum = {
    0: {Name: "A", Number: "1"},
    1: {Name: "B", Number: "2"},
    2: {Name: "C", Number: "3"},
    3: {Name: "D", Number: "4"},
    4: {Name: "E", Number: "5"}
};

const result = Object.keys(dataEnum)
  .filter(d => dataEnum[d].Number == "3")
  .map(d => dataEnum[d].Name + " and number " + dataEnum[d].Number + " was read from the array");

console.log(result);

返回您正在打印的
dataEnum[y]
,但
y
dataArray
的索引,而不是
dataEnum
dataArray[y]
中元素的值是
dataEnum
的索引,因此您应该打印
dataEnum[dataArray[y]

var dataEnum={
0:{Name:“A”,Number:“1”},
1:{姓名:“B”,号码:“2”},
2:{姓名:“C”,编号:“3”},
3:{姓名:“D”,编号:“4”},
4:{姓名:“E”,号码:“5”}
};
var dataArray=[];
for(数据枚举中的变量x){
if(数据枚举[x]。编号=“3”){
dataArray.push(x);
console.log(“名为“+dataEnum[x].name+”和编号为“+dataEnum[x].number+”的对象“+x+”被推送到数组中”);
//结果:
//名为C、编号为3的对象2被推送到数组中
}
}
for(数据数组中的变量y){
console.log(“对象”+dataArray[y]+,名称为“+dataEnum[dataArray[y]]。名称+”和数字“+dataEnum[dataArray[y]]。数字+”已从数组中读取”);
//结果:
//已从数组中读取名称为A、编号为1的对象0

}
这个问题不清楚。它应该打印什么?您的第二个循环是打印
dataEnum[y]
,而不是
dataArray[y]
。谢谢Rostero。你的建议很有效。虽然我需要将该项转移到一个数组中,以便稍后检索,但在实际代码中,数组中会有更多的元素,作为稍后将从中读取的项列表