构造这样的对象:
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
内放置尽可能多的键,以便正确构造对象。我怎么能这样做?
答案 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
这个只有一个对象,而第一个有一个以上的对象。