我有一个具有键-值对的数据对象.数据对象包括4个具有相应值的属性.然而,从接口中拉取数据时,有时会显示2到3个属性,如下图所示(如果某个属性的数据不可用,则不会显示在对象中).我想将缺少的属性重新添加到同一个对象中,如下所示.

Data Output

var obj = {
  property1: 100
  property2: 80
  property3: 50
}


我想在物体if property4 exists内进行判断.如果不是,则可以将其添加到布尔值为False的同一对象中

My code that checks all properties whether they are missing, but it is not working as expected

var obj = {
  property1: 100,
  property2: 80,
  property3: 50
}
;

const property_1 = obj.hasOwnProperty('property1');
console.log(property_1);
const property_2 = obj.hasOwnProperty('property2');
console.log(property_2);
const property_3 = obj.hasOwnProperty('property3');
console.log(property_3);
const property_4 = obj.hasOwnProperty('property4');
console.log(property_4);

if (property_1 === false || property_2 === false || property_3 === false || property_4 === false)  {

obj.property1 = false
obj.property2 = false
obj.property3 = false
obj.property4 = false
 
} 

console.log(obj)

//Console Output

{
  property1: false,
  property2: false,
  property3: false,
  property4: false
}

My Expected Result is:

{
  property1: 100,
  property2: 80,
  property3: 50,
  property4: false // Does not exist, hence it is false 
}

我可以知道我错在哪里吗?

推荐答案

你的情况

if (property_1 === false || property_2 === false || property_3 === false || property_4 === false)  {

如果缺少any个属性,则为True.然后将所有属性设置为false,包括已经具有值的属性.

您只需 for each 属性使用一系列if条语句:

if (!obj.hasOwnProperty('property1')) {
    obj.property1 = false;
}
if (!obj.hasOwnProperty('property2')) {
    obj.property2 = false;
}
...

但要做到这一点,简单的方法是将对象与包含所有属性的对象合并.

var obj = {
  property1: 100,
  property2: 80,
  property3: 50
};

const defaults = {
  property1: false,
  property2: false,
  property3: false,
  property4: false
};

obj = {...defaults, ...obj};

console.log(obj);

Javascript相关问答推荐

如何最好地从TypScript中的enum获取值

Bootstrap动态选项卡在切换选项卡后保持活动状态,导致元素堆叠

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

函数返回与输入对象具有相同键的对象

使用Java脚本根据按下的按钮更改S文本

获取Uint8ClampedArray中像素数组的宽度/高度

当使用';字母而不是与';var#39;一起使用时,访问窗口为什么返回未定义的?

JQuery Click事件不适用于动态创建的按钮

如何在HTMX提示符中设置默认值?

传递方法VS泛型对象VS事件特定对象

当我点击一个按钮后按回车键时,如何阻止它再次被点击

用于部分字符串的JavaScript数组搜索

处理TypeScrip Vue组件未初始化的react 对象

自动滚动功能在当前图像左侧显示上一张图像的一部分

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

ComponentWillReceiveProps仍在React 18.2.0中工作

Chrome上的印度时区名S有问题吗?

更新文本区域行号

如何使用fltter_js将对象作为参数传递给javascrip?

如何从Reaction-Redux中来自API调用的数据中筛选值