Javascript 仅克隆具有少量属性的对象

Javascript 仅克隆具有少量属性的对象,javascript,jquery,object,clone,Javascript,Jquery,Object,Clone,有没有办法克隆一个JS中只有很少属性的对象? 例如 var Person = { name: "Bob", age: 32, salary: 20000 }; 我必须使用name和age属性创建另一个person对象,使其看起来像这样: var clonedPerson = { name: "Bob", age: 32 }; 我可以对对象进行深度克隆并删除。但是我想知道是否有更好的方法来做这件事。更简单 var-Person={ 姓名:“鲍勃”, 年

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

var Person = {
    name: "Bob",
    age: 32,
    salary: 20000
};
我必须使用name和age属性创建另一个person对象,使其看起来像这样:

var clonedPerson = {
    name: "Bob",
    age: 32
};
我可以对对象进行深度克隆并删除。但是我想知道是否有更好的方法来做这件事。

更简单

var-Person={
姓名:“鲍勃”,
年龄:32岁,
工资:20000
};
var ClonedPerson=jQuery.extend({},Person);
删除ClonedPerson.salary;
log(JSON.stringify(Person));
log(JSON.stringify(ClonedPerson))
更简单

var-Person={
姓名:“鲍勃”,
年龄:32岁,
工资:20000
};
var ClonedPerson=jQuery.extend({},Person);
删除ClonedPerson.salary;
log(JSON.stringify(Person));
log(JSON.stringify(ClonedPerson))

使用最新的ES6,您可以通过以下代码实现这一点

const Person={
姓名:“鲍勃”,
年龄:32岁,
工资:20000
};
const{salary,…clonedPerson}=Person

console.log(clonedPerson)
使用最新的ES6,您可以通过以下代码实现这一点

const Person={
姓名:“鲍勃”,
年龄:32岁,
工资: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

使用数组成员方法的另一种方法:

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

您可以只查看旧对象的属性,只复制所需的属性。如果不想使用“删除”,则必须仅使用所需属性定义新对象。没有本机方法可用于复制仅具有所需属性的对象。
var clonedPerson={name:Person.name}
@adeneo仅适用于字符串,如果使用包含对象的属性执行此操作,它将引用,不clone@user2415266-我在OP的示例中只看到了基本体。您可以只查看旧对象的属性,然后只复制所需的属性。如果不想使用delete,则必须定义一个新对象,其中只包含所需的属性。没有本机方法可用于复制仅具有所需属性的对象。
var clonedPerson={name:Person.name}
@adeneo仅适用于字符串,如果您使用包含对象的属性执行此操作,则它将引用而不是clone@user2415266-我在OP的示例中只看到了PRIMATIONS OP说,“我可以对该对象进行深度克隆并删除。但我想知道是否有更好的方法。“尽管如此,你使用的是
删除
?我认为这种方法很简单,只是想确认一下。讽刺的是,你揭露了一种更好的方法……:)@MarcosSedrez谢谢你……但是的……正如Pranesh所提到的……我想知道是否有其他方法可以做到这一点。OP说,”我可以对对象进行深度克隆并删除。但我想知道是否有更好的方法。“尽管如此,您仍在使用
删除
?我认为这样做很简单,只是想确认一下。讽刺的是,你揭露了一个更好的方法……:)@谢谢你。。但是是的。。正如Pranesh所提到的。。我想知道是否有其他方法可以做到这一点。这看起来是一个优雅的解决方案。不幸的是,我没有使用ES6。这看起来是一个优雅的解决方案。不幸的是,我没有使用ES6。