Изменение всех пар ключ-значение в объекте с помощью цикла for - PullRequest
0 голосов
/ 05 февраля 2019

Я использую React и JavaScript.Я пытаюсь взять существующий объект с парами ключ-значение и сделать каждое значение пар ключ-значение равным нулю.

Я попытался использовать цикл for с ключевым словом in.Получение каждой пары ключ-значение и изменение ее на ноль, но что-то идет не так, и я не знаю, как это исправить.

let myObj = {name: 'Bob', lname: 'Johnson'};
for (let x in myObj) {
    myObj.x = null;
}

return myObj;

Я хочу, чтобы переменная myObj получала все свои пары ключ-значениеравным нулю.Конечный результат:

myObj = {name: null, lname: null};

Ответы [ 6 ]

0 голосов
/ 05 февраля 2019

Вы можете сделать это кратко, используя Object.keys и forEach:

const myObj = {name: 'Bob', lname: 'Johnson'};

Object.keys(myObj).forEach(k => myObj[k] = null);

console.log(myObj);
0 голосов
/ 05 февраля 2019

Если вы хотите сохранить его неизменным, вы можете просто создать новый объект с теми же ключами.

const NullifyValues = obj => {
  return Object.keys(obj).reduce((result, key) => {
    result[key] = null;
    return result;
  }, {})
}

const test = {
  cat: 1,
  dog: 2,
  bat: 3
}

const nullified = NullifyValues(test);
console.log(nullified) // Object { cat: null, dog: null, bat: null }
0 голосов
/ 05 февраля 2019

Помните, когда вы делаете

obj.x = 'some value'

Вы на самом деле пытаетесь получить доступ к свойству с именем x на объекте.

Но когда вы делаете

obj[x] = 'some value'

Javascriptпопытается определить значение переменной x и использовать его в качестве имени свойства.

Теперь должно быть ясно, что вы можете запустить forEach для ключей объекта и установить для каждого свойства значение null.

Object.keys(myObj).forEach(key => myObj[key] = null)
0 голосов
/ 05 февраля 2019

Одна линия с ванилью JS:

 Object.keys(myObj).forEach(v => myObj[v] = null)
0 голосов
/ 05 февраля 2019

Обновите ваш объект, чтобы использовать обозначение скобкиn вместо обозначение точки .Таким образом, вы будете использовать переменную x вместо буквального значения "x"

См. Рабочий пример ниже:

let myObj = {name: 'Bob', lname: 'Johnson'};

for (let x in myObj) {
    myObj[x] = null; // change from myObj.x to myObj[x]
}
console.log(myObj);
0 голосов
/ 05 февраля 2019

Вам необходимо получить доступ к свойству по его имени, а не к свойству x объекта.

let myObj = {name: 'Bob', lname: 'Johnson'}

for (let x in myObj) {
    myObj[x] = null
}

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