Как удалить значения из объекта javaScript? - PullRequest
0 голосов
/ 06 ноября 2018
var object = {
   'ex1': '123',
   'ex2': '234',
   'ex3': '345',
   'ex4': '456',
   'ex5': '678'
}

Каков наилучший способ удаления значений без свойства remove следующим образом?

var object = {
   'ex1': '',
   'ex2': '',
   'ex3': '',
   'ex4': '',
   'ex5': ''
}

Ответы [ 5 ]

0 голосов
/ 07 ноября 2018

Я думаю, что есть много подходов.

Мне нравится этот:

    const obj = {
      ex1: '123',
      ex2: '234',
      ex3: '345',
      ex4: '456',
      ex5: '678'
    }

    for (const p in obj) obj[p] = null;

    console.log(obj);

Но я считаю также приемлемым тот, который использует итераторы ES6:

    const obj1 = {
      ex1: '123',
      ex2: '234',
      ex3: '345',
      ex4: '456',
      ex5: '678'
    }

    for (k of Object.getOwnPropertyNames(obj1)) {
      obj1[k] = null;
    }

    console.log(obj1);
0 голосов
/ 06 ноября 2018

Просто используйте for...in для перебора свойств объекта:

var object = {
   'ex1': '123',
   'ex2': '234',
   'ex3': '345',
   'ex4': '456',
   'ex5': '678'
}

for (const prop in object) { object[prop] = '' };

console.log(object);
0 голосов
/ 06 ноября 2018

Итерируйте ключи объекта, используя Object.keys, и установите значения пустыми. Также вам нужно назвать ваш объект чем-то отличным от Object, поскольку это уже предопределенный объект в javascript.

var object = {
   'ex1': '123',
   'ex2': '234',
   'ex3': '345',
   'ex4': '456',
   'ex5': '678'
}

Object.keys(object).forEach(key => {
   object[key]  = ''
})
console.log(object);
0 голосов
/ 06 ноября 2018

Кроме того, вы можете достичь этого с помощью функции уменьшить .

var obj = {
   'ex1': '123',
   'ex2': '234',
   'ex3': '345',
   'ex4': '456',
   'ex5': '678'
}

const new_object = Object.keys(obj).reduce((agg, item) => {
  agg[item] = ''
  return agg
}, {})

console.log(new_object)

Метод redu () выполняет функцию редуктора (которую вы предоставляете) в каждый элемент массива приводит к одному выходному значению.

EDIT:

Обратите внимание, что Reduce вернет новый объект (он не будет переопределять существующий объект).

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

0 голосов
/ 06 ноября 2018

Вы можете получить ключи, выполнить итерацию и назначить требуемое значение для свойств.

var object = { ex1: '123', ex2: '234', ex3: '345', ex4: '456', ex5: '678' };

Object
    .keys(object)
    .forEach(k => object[k] = '');

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