JS更改嵌套属性

时间:2020-10-27 19:18:42

标签: javascript node.js

我需要更改嵌套变量属性。首先检查它是否存在,然后根据需要将其更改为“ N / A”。这就是我所拥有的。

"sed -n '/^x$/,/^y$/p'"

我不确定如何设置计数让我们直接通过goign更改值即可。似乎很简单,也许我错过了一些东西。

我可以在if语句中看到该值,但无法对实际属性值本身进行任何更改。基本上,如果值是空,则将其更改为“ N / A”

3 个答案:

答案 0 :(得分:1)

您可以使用减少数组方法。首先使用 Object.keys 方法获取所有键。然后遍历键并检查计数是否为空。如果为null,则将其更改为“ N / A”。

const json = {
  isCat: {
    isAvaliable: true,
    count: 5,
  },
  isDog: {
    isAvaliable: true,
    count: 10,
  },
  isFrog: {
    isAvaliable: false,
    count: null,
  },
};

const ret = Object.keys(json).reduce((prev, c) => {
  const p = prev;
  if (!json[c].count) p[c] = { ...json[c], count: 'N/A' };
  else p[c] = { ...json[c] };
  return p;
}, {});
console.log(ret);

答案 1 :(得分:1)

使用Object.entries和Object.fromEntries可以将旧对象映射到新对象。如果count属性是正确的,即不是null,则将其映射通过,否则浅复制该元素,并使用新的count值更新"N/A"属性。这样可以避免更改原始对象。

const newJson = Object.fromEntries(Object.entries(json).map(([key, value]) => ([
  key,
  value.count ? value : { ...value,
    count: 'N/A'
  }
])));

const json = {
  isCat: {
    isAvaliable: true,
    count: 5
  },
  isDog: {
    isAvaliable: true,
    count: 10
  },
  isFrog: {
    isAvaliable: false,
    count: null
  }
};

const newJson = Object.fromEntries(Object.entries(json).map(([key, value]) => ([
  key,
  value.count ? value : { ...value,
    count: 'N/A'
  }
])));

console.log(newJson);

答案 2 :(得分:1)

另一个减少的解决方案。注意返回值中的逗号运算符。

const json = {isCat: {isAvaliable: true,count: 5,},isDog: {isAvaliable:true,count: 10,},isFrog: {isAvaliable: false,count: null,},};

const res = Object.keys(json).reduce((pV,cV)=>(json[cV].count==null?json[cV].count='N/A':null,json),{});
console.log(res);