let user = {date:'111'};
let user1 = {date:'222'};
let user2 = {date:'113'};
let user3 = {date:'333'};
let arr = [user,user1, user2, user3];
let vip =[];
let as =[];
let low =[];
let zero = [];
let sep = function (obj,i,arr) {
let k = +obj.date;
if(k === 112 || 122 || 132 || 111 || 211 || 311 || 121 || 321 || 331 || 221 ){
vip.push(obj)
}else if (k === 212 || 222 || 232) {
as.push(obj)
}else if (k === 312 || 322 || 113 || 213 || 123 || 223 || 133 || 233){
low.push(obj)
} else if (k === 333 || 323 || 332) {
zero.push(obj)
}
};
arr.forEach(sep);
console.log('vip-->', vip, 'as--->', as, 'low--->',low, 'zero--->', zero);
У меня условия или проваливаются... и все юзеры попадают в массив, указанный в первом условии. А нужно, чтобы распределялись в зависимости от своего значения. Что я сделал не так ? Или может подскажете, как можно это сделать правильнее - красивее...
Сейчас идет сравнение «k === 112 или 122», а не *«k === 112 или k === 122», как вам хочется. 122 всегда эквивалентно true
. На этом if
заканчивается, и код переходит к vip.push(obj)
.
Нужно так:
if ((k === 112) || (k === 122) || (k === 132) и т.д.
Еще лучше (проще читать и сложнее ошибиться) - создать массивы и проверять, содержится ли k
в одном из них:
var array1 = [112, 122, 132, 111, 211, 311, 121, 321, 331, 221];
var array2 = [.....]
if (array1.includes(k)) {
vip.push(obj)
}
else if (array2.includes(k) {
}
Элементы массива и k
нужно привести к одному типу.
У вас неверно написаны условия. нужно так
k === 113 || k === 122 || k === 132...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю шифр ВигенаЯ не могу понять почему при введении ключа и нажатия шифрования или расшифрования срабатывает alert("Ключ не содержит буквы");