使用for循环更改对象中的所有键值对

时间:2019-02-05 10:41:00

标签: javascript object for-loop

我正在使用React和JavaScript。我正在尝试使用具有键值对的现有对象,并使键值对的每个值都等于null。

我尝试将for循环与in关键字一起使用。获取每个键值对并将其更改为null,但是出了点问题,我不知道如何解决。

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

return myObj;

我希望myObj变量将其所有键值对都等于null。 最终结果:

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

6 个答案:

答案 0 :(得分:1)

您需要按名称访问属性,而不是访问对象上的属性x

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

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

console.log(myObj)

答案 1 :(得分:1)

记住当您这样做

obj.x = 'some value'

您实际上正在尝试访问对象上名为x的属性。

但是当您这样做

obj[x] = 'some value'

Javascript将尝试解析变量x的值,并将其用作属性名称。

现在应该清楚的是,您可以在对象的键上运行forEach并将每个属性设置为null。

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

答案 2 :(得分:1)

如果要使其保持不变,则可以简单地使用相同的键创建一个新对象。

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 }

答案 3 :(得分:0)

将您的对象更新为使用bracket notationn而不是dot notation。这样,您将使用变量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);

答案 4 :(得分:0)

使用香草JS一行:

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

答案 5 :(得分:0)

您可以使用Object.keysforEach简洁地完成此操作:

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

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

console.log(myObj);

相关问题