Javascript-使用数组中的键复制对象

Javascript-使用数组中的键复制对象,javascript,Javascript,我有一个数组,里面有名字 我还有一个对象,其键与数组中的键相同。该对象还具有其他关键点 我想复制对象,但只包括数组中的键 常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } const objCopy=Object.assign{},obj //我想把这个控制台显示出来 // { //一:367,, //二:427,, //三:753 // } logobjCopy这可能会对您有所帮助,您必须在keys数组中循

我有一个数组,里面有名字

我还有一个对象,其键与数组中的键相同。该对象还具有其他关键点

我想复制对象,但只包括数组中的键

常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } const objCopy=Object.assign{},obj //我想把这个控制台显示出来 // { //一:367,, //二:427,, //三:753 // }
logobjCopy这可能会对您有所帮助,您必须在keys数组中循环并添加grab从obj获取每个现有的键,以便构建新对象。它不是一个副本,而是一个新对象,带有您想要的关键点。 常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } 常量objCopy={}; 对于let i=0;i.长度;i++{ objCopy[keys[i]]=obj[keys[i]]; } console.logobjCopy您可以在keys数组上使用.reduce来获得所需的对象

常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } const objCopy=keys.reducea,e=>{ a[e]=obj[e]; 返回a; }, {}; console.logobjCopy使用forEach循环

常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } var obj1={}; keys.forEache=>{ obj1[e]=obj[e] } const objCopy=Object.assign{},obj1 console.logobjCopyhasOwnProperty用于排除继承的属性

常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } 常量objCopy={};//复制 对于obj中的let属性{ 如果obj.hasOwnPropertyproperty&&keys.findk=>k==property{ objCopy[property]=obj[property]; } } console.logobjCopy 常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } 常量objCopy={}; keys.forEachkey=>objCopy[key]=obj[key]; console.logobjCopy尝试以下操作:

常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 } const extract={1,2,3}=>Object.assign{},{1,2,3}; console.logextractobj非常简单

常量键=['1','2','3']; 常量对象={ 日期:'一月', 颜色:“红色”, 一:367,, 二:427,, 三:753 }; const res=keys.reducea,c=>obj[c]?a[c]=obj[c]:c,a,{};
console.logres 可以使用以下方法获得所需对象:

const keys = ['one', 'two', 'three'];

const obj = {
    date: 'Jan',
    color: 'Red',
    one: 367,
    two: 427,
    three: 753
}

let desiredObject = Object.keys(obj)
    .filter(key => keys.includes(key))
    .map(key => {
        return {[key]: obj[key]}
    })
    .reduce((a, b) => Object.assign({}, a,b));

+1用于检查它是否具有该属性。我建议进行一次编辑,让内部为循环。我们应该在JS中使用let和const,并停止使用varFirst您的代码是错误的-重复的obj声明。对于object,如果不需要另一个赋值,最好使用const而不是let。@Аааааааааа我解决了您的问题。这不是这个问题的答案。如果您需要额外的属性4,那么您需要更新多少?@Ааааааааааааааааааааааа。我认为问题的关键在于如何通过过滤包含字符串键的键数组来复制对象。谢谢
const keys = ['one', 'two', 'three'];

const obj = {
    date: 'Jan',
    color: 'Red',
    one: 367,
    two: 427,
    three: 753
}

let desiredObject = Object.keys(obj)
    .filter(key => keys.includes(key))
    .map(key => {
        return {[key]: obj[key]}
    })
    .reduce((a, b) => Object.assign({}, a,b));