更新其中的所有值后如何返回修改后的对象?

时间:2019-03-26 15:12:33

标签: javascript ecmascript-6

我需要在看起来像这样的对象中的所有值上加上单引号:

{name: "testUser", type: "regular"}

该对象需要如下所示:

{name: "'testUser'", type: "'regular'"}

我正在使用Object.values来实现:

Object.values(targetObject).map(value => value = `'${value}'`)

除了没有完全更新targetObject。实现这一目标的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

要更新原始对象,您需要密钥。使用Object.entries()来获取键和值,并以Array.forEach()进行迭代,并为每个键添加新值:

const targetObject = {name: "testUser", type: "regular"}

Object.entries(targetObject) // get an array of [key, value] pairs
  .forEach(([k, v]) => targetObject[k] = `'${v}'`) // update the original object keys

console.log(targetObject)

答案 1 :(得分:1)

您可以使用Object.entries遍历对象中的所有条目并更新它们:

const obj = {name: "testUser", type: "regular"};

for (let [key, value] of Object.entries(obj)) {
  obj[key] = `'${value}'`;
}

console.log(obj);

答案 2 :(得分:1)

您可以for..in遍历对象的属性。

const obj = {name: "testUser", type: "regular"}

for (let k in obj){
 obj[k] = `'${obj[k]}'`
}

console.log(obj)

答案 3 :(得分:0)

您可以映射新对象并​​将其收集到单个对象中。

var object = { name: "testUser", type: "regular" },
    updated = Object.assign(...Object.entries(object).map(([k, v]) => ({ [k]: `'${v}'` })));

console.log(updated);