简体   繁体   English

根据动态属性更改对象值数组

[英]alter array of object value base on dynamic property

I have array of object like this我有这样的对象数组

let arr = [
  {
    "james-0": {
      "value": "",
      "error": false
    },
    "john-0": {
      "value": "",
      "error": false
    },
    "jordan-0": {
      "value": "",
      "error": false
    }
  }
]

I want to alter error to true if the value is not false / empty string.如果值不是假/空字符串,我想将错误更改为真。

I tried this but it deosn't seem to work, I can't hardcode james-${i}我试过了,但它似乎不起作用,我不能硬编码james-${i}

arr = arr.map((o,i) => {

  let prop = o[`james-${i}`]
  if(!prop.value) prop.error = true

  console.log(prop)

  return {
    ...o,
    [`james-${i}`]: prop
  }
})

You can try this approach你可以试试这个方法

 let arr = [ { "james-0": { "value": "", "error": false }, "john-1": { "value": "", "error": false }, "jordan-2": { "value": "val", "error": false } } ]; arr = arr.map(value => { Object.keys(value).forEach(key => { if (!value[key].value) { value[key].error = true; } }) return value; }) console.log(arr);

. .

simply that ?只是那个?

 let arr = [ { "james-0": { "value": "", "error": false } , "john-0": { "value": "abc", "error": false } , "jordan-0": { "value": "", "error": false } } ] Object.keys(arr[0]).forEach( e=> arr[0][e].error = ( arr[0][e].value == '')) console.log( arr )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM