我知道要为现有的JavaScript对象添加一个命名对象:
var json = {};
json.a = {name:"a"};
但是如何以类似的方式向现有JavaScript对象添加对象而不为其指定关联名称,以便可以通过for()
语句访问它。对不起,如果我有点模糊,我对JavaScript对象了解不多。
更新
我希望最终结果如下:
var json = [{name:'a'}{name:'b'}];
答案 0 :(得分:5)
你所拥有的并不是严格意义上的JSON对象。你使用的是JS对象文字。
你可以这样做:
var jsObj = {};
// add a 'name' property
jsObj = { name: 'a'};
var anotherObj = { other: "b" };
// will add 'other' proprty to jsObj
$.extend(jsObj, anotherObj);
// jsObj becomes - {name: 'a', other:'b'}
上面的 JSON 表示形式如下:
var jsonString = "{'name': 'a', 'other':'b'}";
// will give you back jsObj.
var jsonObj = JSON.Parse(jsonString); // eval(jsonString) in older browsers
请注意,您不能拥有没有名称的财产。这是无效的:
// invalid, will throw error
jsObj = { : 'a'};
答案 1 :(得分:3)
尝试使用
推送项目的数组myArrayVar.push(value);
或
myArrayVar[myArrayVar.length] = value;
答案 2 :(得分:0)
拥有没有属性名称的对象的属性是没有意义的。毕竟,“for ... in”循环是对该属性名称集合的循环。也就是说,
for (var k in obj)
将“k”设置为等于“obj”中属性的每个名称。
答案 3 :(得分:0)
您不能这样做,因为JSON对象是字符串 - 值对的集合。值可以是数组,您可以将对象推送到该数组中,而不使用关联名称。
答案 4 :(得分:0)
您所描述的是一系列对象。
var j = [{name:'a'},{name:'b'}];
这具有您正在寻找的属性。您可以这样操作:
for(var i in j) {
alert(j[i].name);
}