Javascript:添加键值对文字,给出未定义的结果
Javascript : Adding Key Value pair literal giving undefined result
它在我的上一次测试中有效,但现在它给我带来了困难。。基本上我有这个代码:
var myOBJ = {};
for (var i = 0; i < myitems.length; i++) {
myOBJ[i].itemtype = myitems.type;
myOBJ[i].name = myitems.name;
}
CCD_ 1内部是由于某种原因需要重写到另一个CCD_ 2的数据。但我有错误
Error: myOBJ[i] is undefined
有人能告诉我我缺了什么吗?
不能通过索引访问对象文字,必须通过键访问它。
如果myOBJ
是一个数组,那么您可以通过索引来访问它。或者,如果myOBJ
有数字键,那么您的代码就可以工作了。
您可以很容易地使每个键成为一个数字,然后如果您首先实例化每个对象,就可以通过某种伪索引访问每个对象。
myOBJ[i] = {};
这将输出类似于:
{
1: {};
//etc.
}
但为什么不简单地把myOBJ
做成一个数组呢?
你必须在你试图创建的每个元素中初始化一个对象,所以基本上这样做:
var myOBJ = {};
for (var i = 0; i < myitems.length; i++) {
// Create a new object here.
myOBJ[i] = {};
myOBJ[i].itemtype = myitems.type;
myOBJ[i].name = myitems.name;
}
由于您无论如何都在进行数值计算,因此最好将myOBJ
创建为数值数组:
var myOBJ = [];
现在我不知道你的myitems
对象是如何工作的,但如果它包含两个名为name
和type
的键,那么你实际上就无法对它进行数字迭代,因为它是一个对象,所以它没有myitems
0属性。所以你可能会出错。假设它实际上是一个包含type
和name
的嵌套对象的数组,您可以很容易地对其进行迭代,并使用push()
将object literal
添加到您的数组中,如下所示:
var myOBJ = [];
for (var i = 0; i < myitems.length; i++) {
// Create and push new object here.
myOBJ.push({
itemtype : myitems[i].type,
name : myitems[i]. name
});
}
如果您只想将值从myitems
复制到myOBJ
中的另一个对象,我建议您将myOBJ
更改为Array
,在循环中创建一个临时对象,并将该临时对象添加到myOBJ数组
var myOBJ = [];
for (var i = 0; i < myitems.length; i++) {
var item = myitems[i];
var temp = {
'itemtype' : item.type,
'name' : item.name
};
myOBJ[i] = temp; // (or) myOBJ.push(temp);
}
您甚至可以保留myOBJ = {}
,但它将只是一个对象,每个属性都是object
0,在语义上与Array相同,因此请使用Array。
myOBJ
的各个元素最初是未定义的。
您必须创建一个新对象来包含属性:
myOBJ[i] = {};
myOBJ[i].itemtype = myitems.type;
myOBJ[i].name = myitems.name
或者,也许更有效的是,只需使用对象文字进行初始化:
myOBJ[i] = {
itemtype: myitems.type,
name: myitems.name
};
由于您似乎只使用数字索引,因此还应该考虑使用数组[]
,而不是变量myOBJ
的对象{}
。
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 解析-为什么user.getSessionToken()返回未定义的结果
- Chrome扩展,Chrome.tabs.query的结果未定义
- 从JSON API结果迭代时未定义
- json-api和错误结果:无法读取属性'长度'的未定义
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- Meteor js-控制台显示'未定义'即使返回结果
- 获取结果未定义(主干.js)
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 离子警报 - 检查结果是否未定义
- 使用String.FromCharCode时,jQuery返回未定义的结果
- 解析JSON字符串返回未定义的结果
- Javascript:添加键值对文字,给出未定义的结果
- Javascript/Underscore赢得't跳过未定义的结果
- 为什么这个JavaScript代码的结果是“;未定义”;
- “渲染骨干模型视图”返回未定义的结果
- 流星:防止 findOne() 的未定义结果
- node.js process.env:将 process.env 属性分配给字符串类型中的未定义结果
- JSON “未定义”结果
- 打印数组时的 JavaScript 未定义结果