为了账号安全,请及时绑定邮箱和手机立即绑定

Nest Javascript 对象不接受推送方法。类型错误:无法读取未定义的属性“push””

Nest Javascript 对象不接受推送方法。类型错误:无法读取未定义的属性“push””

一只萌萌小番薯 2024-01-18 09:54:22
我试图将变量推入嵌套对象中的属性,但 Javascript 不断给出此错误: TypeError: Cannot read property 'push' of undefined"但是,如果我声明一个嵌套变量并使用它来推送,它就可以工作。为什么 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 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您可以为此使用 concat 方法。就像:

collection[5439]["track"].concat('c');


查看完整回答
反对 回复 2024-01-18
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

collection[5439]["tracks"].push('c');错误是这一行,因为collection[5439]["tracks"]未定义并且不是数组。


尝试这样的事情,如果不存在则使用??(无效合并运算符)进行初始化


var collection = {

    5439: {

      albumTitle: 'ABBA Gold'

    }

  };


(collection[5439]["tracks"] ??= []).push("hello");


console.log(collection[5439]["tracks"])


查看完整回答
反对 回复 2024-01-18
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

collection[5439]["tracks"].push('c');

改为:(track不是tracks

collection[5439]["track"].push('c');


查看完整回答
反对 回复 2024-01-18
  • 3 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信