如何从JavaScript对象中删除值?

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

什么是在不删除属性的情况下删除值的最佳方法?
var object = {
   'ex1': '',
   'ex2': '',
   'ex3': '',
   'ex4': '',
   'ex5': ''
}

2
for (const p in obj) obj[p] = ''; ? (请注意,这是程序代码,不是自然语言文本) - Bergi
5个回答

3
您可以获取键,进行迭代并将所需值分配给属性。

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

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

console.log(object);


3

只需使用for...in遍历对象属性:

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

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

console.log(object);


2

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


“object” 不是一个好的变量名,但它是完全合法的。 - connexo
@connexo,这确实阻止了我们使用 Object.keys :-) - Bergi

0

此外,您还可以使用reduce函数来访问它。

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)

reduce() 方法在数组的每个成员上执行一个 reducer 函数(由您提供),从而产生单个输出值。
编辑:
请注意,reduce 将返回一个新对象(它不会覆盖现有对象)。
如果您希望覆盖现有对象,请查看其他使用 forEach 循环的答案。

这不会改变对该元素的引用。 - connexo
虽然它肯定有效,但它会创建一个新对象,这可能是期望的,但也可能不是作者想要的。 - ProgrammerPer
1
谢谢,我应该提到这一点,我已经添加了一个编辑部分。 - omri_saadon

0

我认为有很多方法可供选择。

我喜欢这个:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接