Javascript 如何将数组推送到没有';不存在于物体中?

Javascript 如何将数组推送到没有';不存在于物体中?,javascript,arrays,Javascript,Arrays,我对JavaScript非常陌生。我试图将新值推送到一个对象上。但当我试图推送一个在myObj中不存在的数组时,我得到了未定义的错误的无法读取属性“push”。 我的代码如下: var myObj={ 第一:“第一价值”, 第二:“第二个值”, } myObj.第三推(123) console.log(myObj)第二次更新: 你可以做一个三元运算符 让myObj={ 第一:“第一个值”, 第二:“第二个值” }; myObj.third=myObj.third?[…myObj.third,

我对JavaScript非常陌生。我试图将新值推送到一个对象上。但当我试图推送一个在myObj中不存在的数组时,我得到了未定义的
错误的
无法读取属性“push”。
我的代码如下:

var myObj={
第一:“第一价值”,
第二:“第二个值”,
}
myObj.第三推(123)
console.log(myObj)
第二次更新:

你可以做一个三元运算符

让myObj={
第一:“第一个值”,
第二:“第二个值”
};
myObj.third=myObj.third?[…myObj.third,123]:[123];
console.log(myObj)第二次更新:

你可以做一个三元运算符

让myObj={
第一:“第一个值”,
第二:“第二个值”
};
myObj.third=myObj.third?[…myObj.third,123]:[123];

console.log(myObj) < p> <代码>推< /Cord>方法是Reals原型的一部分。在您的特定情况下,您试图访问一个未定义的属性,JavaScript中考虑未定义的属性<代码>未定义。因此,您尝试将转换成类似:

myObj.third.push => myObj.undefined.push
由于
myObj
没有
third
键,您可以在控制台中尝试执行
console.log(myObje.third)

因此,引擎返回一个错误,说明
undefined
没有仅在
Array
中可用的属性
push

在这种情况下,在将其用作数组之前,您需要设置并为myObj.third分配一个值,因为有多种方法可以将值设置为数组,您的答案如下:

myObj['third'] = myObj.third || []
但是,如果在分配操作结果时,
myObj.third
具有一个值,则该行将使用该值作为值,在这种情况下,如果您具有以下条件,则将返回任何计算结果:

myObj.third = true; 
然后你会:

myObj.third.push(123);
将显示错误
Uncaught TypeError:myObj.third.push不是函数
,因为当前
myObj.third
不是数组

因此,使用push时,您需要确保在
数组
上操作,或者至少当您初始化属性值设置为
数组
时,您可以找到更多信息

您可以在推送前进行检查:

if ( ! Array.isArray(myObj.third) ) {
   myObj.third = [];
}

myObj.third.push(123)

<代码> Pux方法是Reals原型的一部分,在您的特定情况下,您试图访问一个未定义的属性,在JavaScript中,它被认为是<代码>未定义。因此,您尝试将转换成类似:

myObj.third.push => myObj.undefined.push
由于
myObj
没有
third
键,您可以在控制台中尝试执行
console.log(myObje.third)

因此,引擎返回一个错误,说明
undefined
没有仅在
Array
中可用的属性
push

在这种情况下,在将其用作数组之前,您需要设置并为myObj.third分配一个值,因为有多种方法可以将值设置为数组,您的答案如下:

myObj['third'] = myObj.third || []
但是,如果在分配操作结果时,
myObj.third
具有一个值,则该行将使用该值作为值,在这种情况下,如果您具有以下条件,则将返回任何计算结果:

myObj.third = true; 
然后你会:

myObj.third.push(123);
将显示错误
Uncaught TypeError:myObj.third.push不是函数
,因为当前
myObj.third
不是数组

因此,使用push时,您需要确保在
数组
上操作,或者至少当您初始化属性值设置为
数组
时,您可以找到更多信息

您可以在推送前进行检查:

if ( ! Array.isArray(myObj.third) ) {
   myObj.third = [];
}

myObj.third.push(123)

看起来您已经解决了自己的问题,在初始化数组之前,您不能调用数组上的push。您还可以使用要推送的初始值初始化属性,如:
myObj.third=[123]
,从那里,您可以使用
.push()
添加值
push
数组上的一种方法。要在一个对象上创建一个属性,你只需给它赋值,我希望它能在一个注释中完成(创建一个不存在的属性并推送值)。但看来我的底线是要走的路@WilliamLohan@Teyyihan阿克苏你要的是
myObj.third=[123]
看起来您解决了自己的问题,在初始化数组之前,您不能调用数组上的push。您还可以使用要推送的初始值初始化属性,如下所示:
myObj.third=[123]
,从那里,您可以使用
.push()
添加值
push
数组上的一种方法。要在一个对象上创建一个属性,你只需给它赋值,我希望它能在一个注释中完成(创建一个不存在的属性并推送值)。但看来我的底线是要走的路@WilliamLohan@Teyyihan阿克苏你要的是
myObj.third=[123]if(myObj.third===Array)
条件来克服这个问题。然后我们将确定这是我测试的真实错误。但是我们将使用
if(myObj.third===Array)
条件来克服这个问题。然后我们将确定它是一个数组