更新javascript对象属性?

时间:2012-02-26 16:34:30

标签: javascript object properties

我有如下结构:

skillet.person = {
  name: {
    first: '',
    last: ''
  }, 
  age: {
    current: '' 
  },
  birthday: {
    day: '',
    month: '',
    year: ''
  }
}

我想知道如何更新这些值?即我以下是正确的

skillet.person.name.push({ first: 'blah', last: 'ha'});

但这是错的?我该如何解决这个问题?

9 个答案:

答案 0 :(得分:18)

skillet.person.name.first = "blah"
skillet.person.name.last = "ha"

skillet.person.name = {first : "blah", last : "ha"}

答案 1 :(得分:16)

如果要将对象混合到另一个对象中,可以使用jQuery的深度扩展函数。 “深度”表示它不会用新对象覆盖name,而是覆盖此对象内的属性。

$.extend(true, skillet.person, {
  name: {
    first: 'updated'
  },
  birthday: {
    day: 'updated',
    year: 'updated'
  }
});

现在,skillet.person已更新相应的属性,而其他属性未受影响。

答案 2 :(得分:11)

使用ES7 +语法和功能方法:

novalidate

答案 3 :(得分:5)

在ECMAScript 2015的最新浏览器中,您可以执行以下操作:

Object.assign(skillet.person.name, { first: 'blah', last: 'ha'});

将保留未在右侧对象中列出的任何现有属性。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

答案 4 :(得分:4)

pushArray的一种方法,可以为数组添加新项目。

如果要替换值,则:

skillet.person.name = { … };

如果要在对象中存储多个(完整)名称,则需要该属性来保存对象数组而不是单个对象。

答案 5 :(得分:3)

@ ramon-diogo用ES7 +编写的

我喜欢更新嵌套值,例如:

let user = {
    name: {
        first: 'john',
        last: 'smith'
    },
    age: 18,
    city: 'new york'
}

const age = 20;

user = {...user,...{age}}

console.log(user.age)
// output: 20


const newData ={
    age: 22,
    city: 'san francisco'
};

user = {...user,...newData}

console.log(user.age)
// output: 22
console.log(user.city)
// output: 'san francisco'

答案 6 :(得分:0)

我认为这很简单

     let skillet = {
        person: {
            name    : {
                first: '',
                last : ''
            },
            age     : {
                current: ''
            },
            birthday: {
                day  : '',
                month: '',
                year : ''
            }
        }
    };

    let update = {
        person: {
            name: {
                first: 'blah',
                last : 'ha'
            }
        }
    };

    let result = Object.assign(skillet.person, update.person);

    console.log(result);

答案 7 :(得分:0)

skillet.person.name.first = "blah"
skillet.person.name.last = "ha"

最简单的方法。

答案 8 :(得分:0)

skillset.person.name = {};

这是为对象的属性赋值的最简单方法。