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

时间:2020-03-22 13:35:06

标签: javascript ecmascript-6

我有这样的对象数组

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

如果值不是false /空字符串,我想将错误更改为true。

我尝试过此操作,但似乎无法正常工作,我无法硬编码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
  }
})

2 个答案:

答案 0 :(得分:0)

您可以尝试这种方法

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);

答案 1 :(得分:0)

就是那个吗?

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 ) 

相关问题