使用未定义的长度数组初始化JSON对象

时间:2017-11-30 14:55:30

标签: javascript arrays json

我试图弄清楚如何在JSON对象中定义数组。 例如,

//Lets create a JSON Object
var foo = {
    "id" : "",
    "data" : [
        {"data_id" : "", "data_status" : "", "dataweight" : ""}
    ]
};

如果我想访问第一行数据,似乎是正确的。

现在我如何在数组的多行中推送数据?例如:

foo.data[4].data_id = something;

我想我误解了如何定义JSON对象。或者也许有一些技巧可以访问JSON对象中未定义的长度数组,但我不知道它们。

4 个答案:

答案 0 :(得分:1)

您可以typeof obj === "undefined"

检查json是否未定义

示例,检查foo.data[4]是否未定义,如果未定义则启动它。

if ( typeof foo.data[4] === "undefined" ) foo.data[4] = {};

您现在可以指定foo.data[4].data_id = something;

注意:这是假设定义了foofoo.data

答案 1 :(得分:0)

数组元素foo.data[4]尚不存在。在更改其中一个属性之前,请先尝试创建它。

foo.data[4] = {};
foo.data[4].data_id = "Something";

答案 2 :(得分:0)

如果您尝试推送,请尝试

foo.data.push(something);

为推送操作分配数组索引不是正确的方法,因为索引可能不存在,因此请进行push操作。 希望这会对你有所帮助,

答案 3 :(得分:0)

只要知道数组大小

,就可以这样做



var foo = {
    "id" : "",
    "data" : [
        {"data_id" : "", "data_status" : "", "dataweight" : ""}
    ]
};

var arraySize = 4;

for(var i = 1 ; i < arraySize ; i++){
	var el = {"data_id" : i,"data_status" : "", "dataweight" : ""} ;
	foo.data.push(el);
}
console.log(foo)
&#13;
&#13;
&#13;