Javascript对象中的元素未定义

时间:2014-01-02 17:34:53

标签: javascript json

构造这样的对象:

params (Object) (defaults to: {}) —
    Delete — required — (map)
        Objects — required — (Array<map>)
            Key — required — (String) Key name of the object to delete.

我这样做:

var params = {
    Bucket : data.bucket,
    Delete: [{
    Objects:[{ Key:""}] }]  
};

for(i=0;i<data.keys.length;i++){
    params.Delete[0].Objects[i].Key = data.keys[i];
}

它打破了Key

params.Delete[0].Objects[i].Key = data.keys[i];
                                ^
  

TypeError:无法设置未定义的属性“Key”

我做错了什么?


事实证明Key内只有一个Objects。我想在Objects内放置尽可能多的键,以便正确构造对象。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

Objects数组中有多少个对象文字?从初始化开始,它只看起来像1.但是你使用for循环,暗示你期望不止一个。

该错误表示Objects[i]未定义,无论您在i出现的任何值 for(i=0;i<data.keys.length;i++){ params.Delete[0].Objects.push({Key: data.keys[i]}) }

好像你需要做像

这样的事情
Objects

在处理数据时将新的对象文字添加到params数组中(最初将Objects的定义更改为{{1}}只有一个空数组。)

答案 1 :(得分:0)

你的params.Delete[0].Objects这里只有一个对象,当i为1时就会发生这种情况。你正在根据另一个不同长度的循环来计算for循环。

data.keys

不同于:

params.Delete[0].Objects

这个只有一个对象,而第一个有一个以上的对象。