изменить массив значений объекта на основании свойства Dynami c - PullRequest
2 голосов
/ 22 марта 2020

У меня есть массив объектов, подобный этому

let arr = [
  {
    "james-0": {
      "value": "",
      "error": false
    },
    "john-0": {
      "value": "",
      "error": false
    },
    "jordan-0": {
      "value": "",
      "error": 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 голосов
/ 22 марта 2020

просто что?

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 ) 
0 голосов
/ 22 марта 2020

Вы можете попробовать этот подход

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

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...