Javascript 如何将数组推送到没有';不存在于物体中?
我对JavaScript非常陌生。我试图将新值推送到一个对象上。但当我试图推送一个在myObj中不存在的数组时,我得到了未定义的Javascript 如何将数组推送到没有';不存在于物体中?,javascript,arrays,Javascript,Arrays,我对JavaScript非常陌生。我试图将新值推送到一个对象上。但当我试图推送一个在myObj中不存在的数组时,我得到了未定义的错误的无法读取属性“push”。 我的代码如下: var myObj={ 第一:“第一价值”, 第二:“第二个值”, } myObj.第三推(123) console.log(myObj)第二次更新: 你可以做一个三元运算符 让myObj={ 第一:“第一个值”, 第二:“第二个值” }; myObj.third=myObj.third?[…myObj.third,
错误的无法读取属性“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]是的,我可以。但当我从API中获取数据时,我将无法判断属性是否存在,直到条件满足为止。我希望它能在一行代码中完成。上面更新了答案是的,我可以。但当我从API中获取数据时,我将无法判断属性是否存在,直到条件满足为止。我希望它能在一行代码中完成。上面更新了答案是的,我测试了真正的错误。但是我们将使用if(myObj.third===Array)
条件来克服这个问题。然后我们将确定这是我测试的真实错误。但是我们将使用if(myObj.third===Array)
条件来克服这个问题。然后我们将确定它是一个数组