基于数组过滤对象

Kal*_*nik 3 javascript arrays object filter

我有一个具有这种形式的对象:

const obj = {
    abc: "Moon",
    def: "Earth",
    asd: "Sun",
    dmg: "Venus",
    xyz: "Mars",
    tuv: "Jupiter"
};
Run Code Online (Sandbox Code Playgroud)

以及这种形式的数组:

const arr = ["abc", "def", "tuv"];
Run Code Online (Sandbox Code Playgroud)

我想obj根据给出的值进行过滤arr.这意味着,有没有办法,可能使用过滤方法,obj变成这样:

const newObj = {
    abc: "Moon",
    def: "Earth",
    tuv: "Jupiter"
};
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 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);
Run Code Online (Sandbox Code Playgroud)


Moh*_*man 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);
Run Code Online (Sandbox Code Playgroud)