javascript - 根据过滤键创建新对象

标签 javascript arrays ecmascript-6 javascript-objects

假设我有一个表示键的字符串数组,例如 ['a', 'b', 'd'],以及一个现有对象,例如...

const obj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5
}

有没有一种方法可以根据数组中的键创建一个新对象,该对象是 obj 的过滤版本,这样......

const updated = {
    a: 1,
    b: 2,
    d: 4
}

使用 Object.assign() 函数?

我知道它适用于诸如...的功能

function createNew(o, keys) {
    const updated = {}

    Object.keys(o).forEach(k => {
      if (keys.includes(k)) updated[k] = o[k]
    })

    return updated
}

但我正在寻找使用 Object.assign()

的解决方案

最佳答案

const obj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5
};

const desiredKeys = ['a', 'c', 'd'];

const result = desiredKeys.reduce((acc, key) => {
    acc[key] = obj[key];
    return acc;
}, {});

console.log(result);

关于javascript - 根据过滤键创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42048344/

相关文章:

python - 使用 Numpy 的最快方法 - 多维和与乘积

c# - 检查数组是否包含 false?

javascript - 即使我在构造函数中抛出错误,也不会触发 componentDidCatch

javascript - "Unterminated template literal"文字包含脚本标签时出现语法错误

javascript - 如何将嵌套数组减少为单个对象数组

javascript - 是否可以将 "assign"一个函数转换为另一个函数?

javascript - DataMap/D3 - 如何重置缩放?

javascript - Feross的simple-peer的代码示例是什么?

javascript - 单击链接时更改内部 anchor 标记 css

c# - 匹配数组中的整数