Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 - Fatal编程技术网

带有对象数组的Javascript对象

带有对象数组的Javascript对象,javascript,Javascript,我想知道是否有可能创建一个包含对象数组作为内容的javascript映射 我的代码如下: //Object that replicates a Map var itemRcptMap = {}; //Receipt Object Holder var objReceipt = { id : '', item : '', qty : '', lotNo : '' }; //Iterate an object result w/c is

我想知道是否有可能创建一个包含对象数组作为内容的javascript映射

我的代码如下:

//Object that replicates a Map
var itemRcptMap = {};

//Receipt Object Holder
var objReceipt = {
     id     : '',
     item   : '',
     qty    : '',
     lotNo  : ''
};

//Iterate an object result w/c is not shown in the example 
for (var i in itemRcptResult)
{
    var id = itemRcptResult[i].id;

    if(!itemRcptMap[id]){
        itemRcptMap[id] = new Array();
    }
    objReceipt.id    = arItemRcptResult[i]id;
    objReceipt.item  = arItemRcptResult[i].items;
    objReceipt.qty   = arItemRcptResult[i].quantity;
    objReceipt.lotNo = arItemRcptResult[i].test;
    itemRcptMap[id] = itemRcptMap[id].push(objReceipt);
}
我有以下错误

Cannot find function push in object 1.
我怎样才能纠正这个问题

多谢各位

代码简化:

var itemRcptMap = {};

//Receipt Object Holder
var objReceipt = {
     id     : '',
     item   : '',
     qty    : '',
     lotNo  : ''
};

var id = 5555;
    if(!itemRcptMap[id]){
        itemRcptMap[id] = new Array();
    }
    objReceipt.id    = 1;
    objReceipt.item  = 2;
    objReceipt.qty   = 3;
    objReceipt.lotNo = 4;
    itemRcptMap[id].push(objReceipt);

 //Gets the object with Key 5555
var x = itemRcptMap[5555];  
alert(x.id)
当您访问一个数组时,返回值将是数组的新长度(您将重新分配回实际数组),因此在下一次迭代中,您不会将其推送到数组,而是尝试访问数值的推送方法(
number
没有推送方法)。推送会使源阵列发生变异,因此只需执行以下操作:-

itemRcptMap[id].push(objReceipt);
您可能希望在循环中移动
objReceipt
声明。另一方面,您将在所有数组中得到相同的对象

根据您的评论,您可能希望创建一个id为(不重复)的平面图

//Object that replicates a Map
var itemRcptMap = {};

for (var i=0, l=itemRcptResult.length; i<l; i++){ 
    var id = itemRcptResult[i].id;
    itemRcptMap[id] = itemRcptResult[i];
}
//复制映射的对象
var itemRcptMap={};
对于(var i=0,l=itemRcptResult.length;i当您访问一个数组时,返回值将是数组的新长度(您将重新分配回实际数组),因此在下一次迭代中,您不会将其推送到数组,而是尝试访问数值的推送方法(
number
没有推送方法).Push会对源数组进行变异,因此只需执行以下操作:-

itemRcptMap[id].push(objReceipt);
您可能希望在循环中移动
objReceipt
声明。否则,您将在所有数组中得到相同的对象

根据您的评论,您可能希望创建一个id为(不重复)的平面图

//Object that replicates a Map
var itemRcptMap = {};

for (var i=0, l=itemRcptResult.length; i<l; i++){ 
    var id = itemRcptResult[i].id;
    itemRcptMap[id] = itemRcptResult[i];
}
//复制映射的对象
var itemRcptMap={};

对于(var i=0,l=itemrcptreult.length;i
var itemRcptMap=new Array();
var itemRcptMap=new Array()
它仍然不起作用…请参阅我的编辑以简化我的代码我的意思是,它起作用了,但我仍然无法访问对象。我已经编辑了我的代码post@newbie我不知道您想做什么,但无论您在做什么,都需要执行
var x=itemRcptMap[5555][0];
才能访问该对象。因为
itemRcptMap[id]
是一个数组,其中包含您正在查找的对象。我还建议您使用
[]
而不是
新数组();
@newbie you looking to map?,然后不要使用推送,只需执行
itemRcptMap[id]=objReceipt;
如果您没有
id
DuplicateEdit仍然无法工作…请参阅我的编辑以简化我的代码我的意思是,它可以工作,但我仍然无法访问对象。我已经编辑了我的post@newbie我不知道你想做什么,但无论你在做什么,你都需要做
var x=itemRcptMap[5555][0];
访问该对象。因为
itemRcptMap[id]
是一个数组,其中包含您要查找的对象的名称。我还建议您使用
[]
而不是
新数组();
@newbie you looking-map?,那么不要使用push,只要使用
itemRcptMap[id]=objReceipt;
前提是您没有重复的
id