jquery从循环推入多维数组
我正在尝试通过执行以下操作在for循环中创建一个数组:jquery从循环推入多维数组,jquery,for-loop,multidimensional-array,Jquery,For Loop,Multidimensional Array,我正在尝试通过执行以下操作在for循环中创建一个数组: var newArr = []; for(var j=0; j < ChargeTypes.ChargeType.length; j++){ var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId; var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date; var NoOfR
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr.push({ChargeTypeId},{Date});
newArr.push({ChargeTypeId},{NoOfRoomsAvailable});
};
alert( JSON.stringify(newArr) );
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr.push({ChargeTypeId,Date,NoOfRoomsAvailable});
};
但我希望得到这样的东西:
[1] //ChargeTypeID
{
Date:"2017-12-28",
NoOfRoomsAvailable:"0"
},
[23] //ChargeTypeID
{
Date:"2017-12-28",
NoOfRoomsAvailable:"3"
}
var newArr = [];
for(var j = 0; j < ChargeTypes.ChargeType.length; j++){
var chargeType = ChargeTypes.ChargeType[j];
var chargeAttribute = chargeType.Charge[0]['@attributes'];
var chargeDetails = {
ChargeTypeId : chargeType.ChargeTypeId,
Date : chargeAttribute.Date,
NoOfRoomsAvailable : chargeAttribute.NoOfRoomsAvailable
};
newArr.push(chargeDetails);
};
我试过用这个:
newArr[ChargeTypeId].push("Date",Date);
newArr[ChargeTypeId].push("NoOfRoomsAvailable",NoOfRoomsAvailable);
但我得到了这个错误:
TypeError:newArr[ChargeTypeId]未定义
很明显,我遗漏了一些东西,可能是一些小东西,哈哈,但如果有人能帮我,那就太棒了。这应该行得通
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr[parseInt(ChargeTypeId)] = {
"Date": Date,
"NoOfRoomsAvailable": NoOfRoomsAvailable
};
};
var newArr=[];
对于(var j=0;j
这应该行得通
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr[parseInt(ChargeTypeId)] = {
"Date": Date,
"NoOfRoomsAvailable": NoOfRoomsAvailable
};
};
var newArr=[];
对于(var j=0;j
您只需创建ChargeTypeId
的新数组
,即可进行推送。因为当前未找到newArr[ChargeTypeId]
,所以它会给您带来错误。添加newArr[ChargeTypeId]=[]代码>推之前
试试这个:
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr[ChargeTypeId] = [];
newArr.push({ChargeTypeId},{Date});
newArr.push({ChargeTypeId},{NoOfRoomsAvailable});
};
alert( JSON.stringify(newArr) );
var newArr=[];
对于(var j=0;j
您只需创建ChargeTypeId
的新数组
,即可进行推送。因为当前未找到newArr[ChargeTypeId]
,所以它会给您带来错误。添加newArr[ChargeTypeId]=[]代码>推之前
试试这个:
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr[ChargeTypeId] = [];
newArr.push({ChargeTypeId},{Date});
newArr.push({ChargeTypeId},{NoOfRoomsAvailable});
};
alert( JSON.stringify(newArr) );
var newArr=[];
对于(var j=0;j
只需在(平面)数组的末尾添加一个值。将多个参数传递到push
不会在数组中引入额外的级别。同样,数组索引也是纯数字的,并且是顺序的,从0开始。如果您有自定义的稀疏ID(在您的情况下也是字符串),则不能将它们用作索引来检索/存储数组中的值
相反,请尝试以下方法:
[1] //ChargeTypeID
{
Date:"2017-12-28",
NoOfRoomsAvailable:"0"
},
[23] //ChargeTypeID
{
Date:"2017-12-28",
NoOfRoomsAvailable:"3"
}
var newArr = [];
for(var j = 0; j < ChargeTypes.ChargeType.length; j++){
var chargeType = ChargeTypes.ChargeType[j];
var chargeAttribute = chargeType.Charge[0]['@attributes'];
var chargeDetails = {
ChargeTypeId : chargeType.ChargeTypeId,
Date : chargeAttribute.Date,
NoOfRoomsAvailable : chargeAttribute.NoOfRoomsAvailable
};
newArr.push(chargeDetails);
};
只需在(平面)数组的末尾添加一个值。将多个参数传递到push
不会在数组中引入额外的级别。同样,数组索引也是纯数字的,并且是顺序的,从0开始。如果您有自定义的稀疏ID(在您的情况下也是字符串),则不能将它们用作索引来检索/存储数组中的值
相反,请尝试以下方法:
[1] //ChargeTypeID
{
Date:"2017-12-28",
NoOfRoomsAvailable:"0"
},
[23] //ChargeTypeID
{
Date:"2017-12-28",
NoOfRoomsAvailable:"3"
}
var newArr = [];
for(var j = 0; j < ChargeTypes.ChargeType.length; j++){
var chargeType = ChargeTypes.ChargeType[j];
var chargeAttribute = chargeType.Charge[0]['@attributes'];
var chargeDetails = {
ChargeTypeId : chargeType.ChargeTypeId,
Date : chargeAttribute.Date,
NoOfRoomsAvailable : chargeAttribute.NoOfRoomsAvailable
};
newArr.push(chargeDetails);
};
您所面临的问题是,JS不像其他一些语言那样支持关联数组。相反,JS有对象,你必须接受它。此时,您可以做的最好的事情是创建:
$obj = [
{"ChargeTypeId":"1", "Date":"2017-12-28", "NoOfRoomsAvailable":"0"},
{"ChargeTypeId":"23", "Date":"2017-12-28", "NoOfRoomsAvailable":"3"}
]
然后您可以引用ID作为obj.ChargeTypeId
。这可以通过以下方式实现:
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr.push({ChargeTypeId},{Date});
newArr.push({ChargeTypeId},{NoOfRoomsAvailable});
};
alert( JSON.stringify(newArr) );
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr.push({ChargeTypeId,Date,NoOfRoomsAvailable});
};
var newArr=[];
对于(var j=0;j
您面临的问题是,JS不象其他一些语言那样支持关联数组。相反,JS有对象,你必须接受它。此时,您可以做的最好的事情是创建:
$obj = [
{"ChargeTypeId":"1", "Date":"2017-12-28", "NoOfRoomsAvailable":"0"},
{"ChargeTypeId":"23", "Date":"2017-12-28", "NoOfRoomsAvailable":"3"}
]
然后您可以引用ID作为obj.ChargeTypeId
。这可以通过以下方式实现:
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var ChargeTypeId = ChargeTypes.ChargeType[j].ChargeTypeId;
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr.push({ChargeTypeId},{Date});
newArr.push({ChargeTypeId},{NoOfRoomsAvailable});
};
alert( JSON.stringify(newArr) );
var newArr = [];
for(var j=0; j < ChargeTypes.ChargeType.length; j++){
var Date = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].Date;
var NoOfRoomsAvailable = ChargeTypes.ChargeType[j].Charge[0]['@attributes'].NoOfRoomsAvailable;
newArr.push({ChargeTypeId,Date,NoOfRoomsAvailable});
};
var newArr=[];
对于(var j=0;j
我需要ChargeTypeId作为数组项的键(1或23):)我得到了以下信息:[null,{“日期”:“2017-12-28”,“NoOfRoomsAvailable”:“0”},null,null,null,null,null,null,null,null,null,null,null,null,null,null,{“日期”:“2017-12-28”,“NoOfRoomsAvailable”:“3”}如果将数组推到特定索引,然后中间的元素将是未定义的/null。如果需要,可以采用如下结构{“1”:{Date:“2017-12-28”,noofromsavable:“0”},23:{Date:“2017-12-28”,noofromsavable:“3”}Javascript中的数组不会以这种方式工作。JS不支持关联数组,您必须使用JS中的对象。请参阅下面的nbrooks'或我的答案。我需要ChargeTypeId作为数组项的键(1或23):)我得到了以下信息:[null,{“日期”:“2017-12-28”,“NoOfRoomsAvailable”:“0”},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null