克隆一个只有很少属性的对象
Clone a object only with few properties
有没有办法在JS中克隆一个对象只有几个属性的对象?
例如..
var Person = {
name: "Bob",
age: 32,
salary: 20000
};
我必须创建另一个只有姓名和年龄 属性 的人物对象,这样它看起来像这样:
var clonedPerson = {
name: "Bob",
age: 32
};
我可以对对象进行深度克隆并删除。但是我想知道有没有更好的方法。
更简单?
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>
使用最新的ES6,可以通过以下代码实现..
const Person = {
name: "Bob",
age: 32,
salary: 20000
};
const { salary , ...clonedPerson } = Person
console.log(clonedPerson)
使用数组成员方法的替代方法:
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
有没有办法在JS中克隆一个对象只有几个属性的对象? 例如..
var Person = {
name: "Bob",
age: 32,
salary: 20000
};
我必须创建另一个只有姓名和年龄 属性 的人物对象,这样它看起来像这样:
var clonedPerson = {
name: "Bob",
age: 32
};
我可以对对象进行深度克隆并删除。但是我想知道有没有更好的方法。
更简单?
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>
使用最新的ES6,可以通过以下代码实现..
const Person = {
name: "Bob",
age: 32,
salary: 20000
};
const { salary , ...clonedPerson } = Person
console.log(clonedPerson)
使用数组成员方法的替代方法:
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