Nest Javascript 对象不接受推送方法。TypeError:无法读取未定义的属性“推送”
2020-12-23
109
我试图将一个变量推送到嵌套对象的属性中,但 Javascript 一直给出此错误:TypeError:无法读取未定义的属性“push”
但是,如果我声明一个嵌套变量并使用它来推送,它就可以正常工作。为什么 Javascript 会出现这种行为?
有没有办法在不声明嵌套变量和不声明空数组的情况下做到这一点?
var collection = {
5439: {
albumTitle: 'ABBA Gold'
}
};
collection[5439]["track"] = [''];
console.log(collection[5439].track);
// nested = collection[5439]["track"];
// nested.push('c') // this works
// console.log(nest)
collection[5439]["tracks"].push('c');
3个回答
collection[5439]["tracks"].push('c');
更改为:(
track
不是
tracks
)
collection[5439]["track"].push('c');
thelonglqd
2020-12-23
您可以使用 concat 方法来实现此目的。例如:
collection[5439]["track"].concat('c');
Azahar Alam
2020-12-23
collection[5439]["tracks"].push('c');
此行出现错误,因为
collection[5439]["tracks"]
未定义且不是数组。
尝试类似这样的操作,如果不存在则使用
??
(空值合并运算符) 进行初始化
var collection = {
5439: {
albumTitle: 'ABBA Gold'
}
};
(collection[5439]["tracks"] ??= []).push("hello");
console.log(collection[5439]["tracks"])
Siva Kondapi V
2020-12-23