根据数组过滤对象

时间:2018-11-27 13:14:52

标签: javascript arrays object filter

我有一个具有以下形式的对象:

const obj = {
    abc: "Moon",
    def: "Earth",
    asd: "Sun",
    dmg: "Venus",
    xyz: "Mars",
    tuv: "Jupiter"
};

以及具有以下形式的数组:

const arr = ["abc", "def", "tuv"];

我想根据obj中给出的值来过滤arr。这意味着,有一种可能使用filter方法的方法,将obj变成了这样:

const newObj = {
    abc: "Moon",
    def: "Earth",
    tuv: "Jupiter"
};

2 个答案:

答案 0 :(得分:7)

您可以映射具有所需属性的新对象,然后将所有对象分配给单个对象。

const
    object = { abc: "Moon", def: "Earth", asd: "Sun", dmg: "Venus", xyz: "Mars", tuv: "Jupiter" },
    array = ["abc", "def", "tuv"],
    result = Object.assign(...array.map(k => ({ [k]: object[k] })));

console.log(result);

答案 1 :(得分:6)

您可以使用.reduce()创建结果对象:

const arr = ["abc", "def", "tuv"];
const obj = {
    abc: "Moon",
    def: "Earth",
    asd: "Sun",
    dmg: "Venus",
    xyz: "Mars",
    tuv: "Jupiter"
};

const result = arr.reduce((r, c) => (r[c] = obj[c], r), {});

console.log(result);