仅使用少量属性克隆对象

时间:2016-09-27 16:14:00

标签: javascript jquery object clone

有没有办法克隆一个只有少量JS对象属性的对象? 例如..

var Person = {
    name: "Bob",
    age: 32,
    salary: 20000
};

我必须使用name和age属性创建另一个person对象,以便它看起来像这样:

var clonedPerson = {
    name: "Bob",
    age: 32
};

我可以对对象进行深度克隆,然后删除。但我想知道是否有更好的方法来做到这一点。

3 个答案:

答案 0 :(得分:3)

使用最新的ES6,您可以通过以下代码实现此目的..

const Person = {
  name: "Bob",
  age: 32,
  salary: 20000
};
const { salary , ...clonedPerson } = Person

console.log(clonedPerson)

答案 1 :(得分:2)

更简单?



var Person = {
    name: "Bob",
    age: 32,
    salary: 20000
};
var ClonedPerson = jQuery.extend({}, Person);
delete ClonedPerson.salary;

console.log(JSON.stringify(Person));
console.log(JSON.stringify(ClonedPerson));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

使用Array成员方法的替代方法:

var clone = Object.keys(Person) // convert to an Array of Person keys
            .filter(function(key){return ["salary"].indexOf(key) == -1;}) // exclude key salary
            .reduce(function(clone, current){clone[current] = Person[current]; return clone;}, {}); // convert back the array to a cloned literal object