#javascript
#javascript
Вопрос:
У меня есть следующий массив массивов (вставленный ниже), и я хотел бы перебрать его, чтобы подсчитать, сколько раз появляется каждый цвет. Какой самый простой способ сделать это?
[
["Brown"],
["Blue", "Green"],
["Red", "Black", "White", "Other"],
["Green"],
["Green", "Gold"],
["Blue"]
];
Ответ №1:
Используйте flat()
и reduce()
:
const data = [
["Brown"],
["Blue", "Green"],
["Red", "Black", "White", "Other"],
["Green"],
["Green", "Gold"],
["Blue"]
];
const result = data.flat().reduce((a, v) => (a[v] = (a[v] || 0) 1, a), {});
console.log(result);
Ответ №2:
Вы можете использовать Array.reduce() .
const input = [
["Brown"],
["Blue", "Green"],
["Red", "Black", "White", "Other"],
["Green"],
["Green", "Gold"],
["Blue"]
];
const output = input.reduce((acc, cur) => {
cur.forEach(item => {
if (!acc[item]) acc[item] = 0;
acc[item] ;
})
return acc;
}, {})
console.log(output);
Ответ №3:
Используйте счетчик для подсчета и итерации по массиву
let counter = {}
let colorAry = [
["Brown"],
["Blue", "Green"],
["Red", "Black", "White", "Other"],
["Green"],
["Green", "Gold"],
["Blue"]
];
for(let ary of colorAry) {
for(let color of ary) {
if(counter[color]==undefined) counter[color] = 0
counter[color]
}
}
console.log(counter)
Ответ №4:
Зациклите каждый массив и вложенные массивы и сохраните количество в другой переменной.
let data = [
["Brown"],
["Blue", "Green"],
["Red", "Black", "White", "Other"],
["Green"],
["Green", "Gold"],
["Blue"]
];
// to store the count
let counter = {};
// loop each and sub sub arrays
data.forEach(item => {
item.forEach(subItem => {
counter[subItem] = counter[subItem] ? counter[subItem] 1 : 1
})
});
console.log(counter);