Отфильтруйте объект по паре ключ и значение с массивом, используя javascript - PullRequest
0 голосов
/ 02 марта 2020

У меня есть схема данных как

let data = [{
    "Count": {
        "Grapes": 1,
        "Banana": 6,
    }
}]

мне нужно отфильтровать объект "Count" данных из массива "result"

let result = ["Banana"]

и получить вывод как

let output = {"Banana": 6}

Как мне добиться этого, используя javascript Я пробовал

let output = data[0]["Count"].filter( i => result.includes( data[0]["Count"] ));

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Этот лайнер:

const filtered = Object.fromEntries(Object.entries(data[0]["Count"]).filter(([k]) => result.includes(k))) 

С поддержкой ES5:

const filtered  = Object.keys(data[0]["Count"]).filter(k => result.includes(k)).reduce((acc, k) => (acc[k] = data[0]["Count"][k], acc), {})

Демо:

let data = [{
    "Count": {
        "Grapes": 1,
        "Banana": 6,
    }
}]


let result = ["Banana"]

const filtered = Object.fromEntries(Object.entries(data[0]["Count"]).filter(([k]) => result.includes(k))) 

const filteredES5  = Object.keys(data[0]["Count"]).filter(k => result.includes(k)).reduce((acc, k) => {acc[k] = data[0]["Count"][k]; return acc}, {})


console.log(filtered);
console.log(filteredES5);
0 голосов
/ 02 марта 2020

Это будет работать для ваших значений:

result.map(item => data[0].Count[item])

Если вы хотите получить значение ключа и также удалить неопределенные значения:

result.map(item =>{return  data[0].Count[item] ? {[item] : data[0].Count[item]} : undefined} ).filter(item => item != undefined)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...