Я считаю, что ваша цель следующая.
- Вы хотите получить количество
Yes
и No
из массива ["Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "No", "Yes"]
с помощью скрипта Google Apps.
Для этого, как насчет этого ответа?
Шаблон 1:
В этом шаблоне используется for l oop.
Пример сценария:
var ar = ["Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "No", "Yes"];
var obj = {};
for (var i = 0; i < ar.length; i++) {
var e = ar[i];
if (obj[e]) {
obj[e] += 1;
} else {
obj[e] = 1;
}
}
Logger.log(obj); // {"Yes":9,"No":2}
Пробный пуск:
var ar = ["Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "No", "Yes"];
var obj = {};
for (var i = 0; i < ar.length; i++) {
var e = ar[i];
if (obj[e]) {
obj[e] += 1;
} else {
obj[e] = 1;
}
}
console.log(obj); // {"Yes":9,"No":2}
console.log(obj.Yes)
console.log(obj.No)
Шаблон 2:
В этом шаблоне используется сокращение.
Пример сценария:
const ar = ["Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "No", "Yes"];
const obj = ar.reduce((o, e) => Object.assign(o, {[e]: (o[e] ? o[e] + 1 : 1)}), {});
console.log(obj); // {"Yes":9,"No":2}
- В этом случае можно также использовать синтаксис распространения, например
{...o, [e]: (o[e] ? o[e] + 1 : 1)}
. Но стоимость процесса синтаксиса спреда намного выше, чем у Object.assign
. Итак, я предложил Object.assign
. Ссылка
Пробный пуск:
const ar = ["Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "No", "Yes"];
const obj = ar.reduce((o, e) => Object.assign(o, {[e]: (o[e] ? o[e] + 1 : 1)}), {});
console.log(obj);
console.log(obj.Yes)
console.log(obj.No)
Примечание:
- В случае приведенных выше сценариев значения
Yes
и No
можно получить с помощью obj.Yes
и obj.No
соответственно. - О шаблоне 2 используйте V8.
Ссылки: