Есть массив a.
a = [1,2,1,3,1,4,1,5]
Как узнать, сколько раз 1 содержится в a?
JavaScript
JS - как узнать, сколько раз переменная содержится в массиве?
Вариант с filter:
a = [1,2,1,3,1,4,1,5];
b = a.filter(x => x == 1).length;
alert(b);
В одну строчку:
alert([1,2,1,3,1,4,1,5].filter(x => x == 1).length);
Вариант с reduce:
b = a.reduce((x, y) => x + (y == 1), 0);
Обычным циклом:
b = 0;
for(x of a) { b += x == 1; }
alert(b);
a = [1,2,1,3,1,4,1,5];
b = a.filter(x => x == 1).length;
alert(b);
В одну строчку:
alert([1,2,1,3,1,4,1,5].filter(x => x == 1).length);
Вариант с reduce:
b = a.reduce((x, y) => x + (y == 1), 0);
Обычным циклом:
b = 0;
for(x of a) { b += x == 1; }
alert(b);
a = [1,2,1,3,1,4,1,5];
b = a.filter(function (n) {
if (n==1) {return n};
})
alert(b.length);
_____
Либо по старинке через цикл
a = [1,2,1,3,1,4,1,5];
b = 0;
for (var i = 0; i < a.length; i++) {
if (a[i]==1) {b += 1};
};
alert(b);
b = a.filter(function (n) {
if (n==1) {return n};
})
alert(b.length);
_____
Либо по старинке через цикл
a = [1,2,1,3,1,4,1,5];
b = 0;
for (var i = 0; i < a.length; i++) {
if (a[i]==1) {b += 1};
};
alert(b);
Александр Суббота
А если надо найти кол-во нулей? Твой вариант с filter вернёт 0 для любого массива.
Вот так например
a= [1,2,1,3,1,4,1,5];
a.reduce((a,b)=>(a[b]=a[b]?a[b]+1:1,a),{});//{1: 4, 2: 1, 3: 1, 4: 1, 5: 1}
если надо нам знать конкретно какая именно тогда пишем так
a.reduce((a,b)=>(a[b]=a[b]?a[b]+1:1,a),{})[5];//1
a.reduce((a,b)=>(a[b]=a[b]?a[b]+1:1,a),{})[1];//4
⚤
a= [1,2,1,3,1,4,1,5];
a.reduce((a,b)=>(a[b]=a[b]?a[b]+1:1,a),{});//{1: 4, 2: 1, 3: 1, 4: 1, 5: 1}
если надо нам знать конкретно какая именно тогда пишем так
a.reduce((a,b)=>(a[b]=a[b]?a[b]+1:1,a),{})[5];//1
a.reduce((a,b)=>(a[b]=a[b]?a[b]+1:1,a),{})[1];//4
⚤
С каких пор числовой литерал стал переменной? Наркоманы чертовы.
Алгоритмически, единственный способ - это перебор всех элементов массива (и подсчет кол-ва подходящих по условию). Методы класса Array реализуют перебор вместе со вспомогательной логикой, и выполняют вызовы, поэтому относительно медленные. Быстрейший способ - императивный, через цикл с if или тернарником. Это хорошо для больших массивов. А для мелких, скорость не критерий - поэтому, с ними обычно делается функционально, через стандартный reduce. Остальными методами решать данную задачу == говнокодить, так как остальные подразумевают создание промежуточного массива (делать это при такой простой задаче как подсчет - попросту неэффективно, а значит глупо).
В общем, let count = a.reduce((r, d) => r += (d === 1), 0);
Алгоритмически, единственный способ - это перебор всех элементов массива (и подсчет кол-ва подходящих по условию). Методы класса Array реализуют перебор вместе со вспомогательной логикой, и выполняют вызовы, поэтому относительно медленные. Быстрейший способ - императивный, через цикл с if или тернарником. Это хорошо для больших массивов. А для мелких, скорость не критерий - поэтому, с ними обычно делается функционально, через стандартный reduce. Остальными методами решать данную задачу == говнокодить, так как остальные подразумевают создание промежуточного массива (делать это при такой простой задаче как подсчет - попросту неэффективно, а значит глупо).
В общем, let count = a.reduce((r, d) => r += (d === 1), 0);
alert([ 1,2,1,3,1,4,1,5 ].toString().match( /(1)/g ).length );
Похожие вопросы
- Можно ли именовать переменную в JS?
- Старые добрые массивы. js
- Не правельно складываются переменные js
- Как менять строки и столбцы в двумерном массиве JS
- Работа с переменными JS
- Как заполнить двумерный массив в JS.
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- Js. Как создать матрицу 1000 на 1000 не обьявляя 1000 одномерных массивов построчно
- Не могу понять выражение Упростите на JS условие if(i-- && xx + yy <= 4 ), когда все переменные- числа!