#javascript #arrays #object
Вопрос:
как получить объект на основе двух массивов, где значения в первом уникальны, а во втором любые, где ключом будет слово, а значением будет количество совпадений этого слова?
Например:
let uniqueArray = ['green', 'blue', 'red'];
let anyArray = ['red', 'green', 'red', 'blue, 'yellow', 'green', 'pink', 'red'];
Мы получаем:
{'green': 2, 'blue': 1, 'red': 3}
Комментарии:
1. Что вы пробовали? Где ты застрял?
2. Извините, я не думаю, что вопрос очень ясен. Существует ли связь между первым и вторым массивом? Если да, то почему возвращается
red
?3. @Cerbrus Я пробовал разные комбинации, используя .map,. filter и .reduce, но ни одна из них не сработала должным образом.
4. Пожалуйста, расширьте свой вопрос некоторыми попытками, чтобы мы могли получить представление о том, что вы на самом деле пытаетесь сделать, и что означают эти массивы.
5. @thinkgruen мой плохой, отредактировал массивы
Ответ №1:
Таким образом, вы хотите подсчитать anyArray
количество вхождений в uniqueArray
записи .
Вы можете сделать это с помощью reduce
:
let uniqueArray = ['green', 'blue', 'red'];
let anyArray = ['red', 'green', 'red', 'blue', 'yellow', 'green', 'pink', 'red'];
const result = uniqueArray.reduce((data, key) => {
data[key] = anyArray.filter(x => x === key).length;
return data;
}, {});
console.log(result);