Как извлечь условные значения из списков внутри javascript объектов - PullRequest
1 голос
/ 17 февраля 2020

У меня есть объект со списком внутри каждого ключа. Каков наилучший способ возврата ключа, если строка URL-адреса совпадает с тем, что находится в массиве.

Например, в приведенном ниже коде «entertainment» будет возвращено как «/ video» в массиве развлечений.

const url = "https://example.com/video";

const verticalList = {
    autos:[],
    entertainment:["/video", "/tech"],
    foodanddrink:[],
    healthandfitness:[],
    homepage:["/home"],
    lifestyle:["/ideas", "/executive-life"],
    money:["/money-markets",],
    news:["/briefing"],
    sports:[],
    travel:[],
    weather:[]
}

1 Ответ

4 голосов
/ 17 февраля 2020

Вы можете использовать Object.entries , чтобы получить список пар ключ-значение из вашего объекта, а затем запустить Array.filter, чтобы сравнить значения с вашим url. На последнем шаге вы должны запустить Array.map, чтобы получить соответствующие ключи. String.include может использоваться для проверки, является ли одна строка подстрокой другой.

const url = "https://example.com/video";

const verticalList = {
    autos:[],
    entertainment:["/video", "/tech"],
    foodanddrink:[],
    healthandfitness:[],
    homepage:["/home"],
    lifestyle:["/ideas", "/executive-life"],
    money:["/money-markets",],
    news:["/briefing"],
    sports:[],
    travel:[],
    weather:[]
}

let matches = Object.entries(verticalList)
                    .filter(([key,value]) => value.some(x => url.includes(x)))
                    .map(([key,value]) => key);

console.log(matches)
...