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...
Сборка персонального компьютера от Artline: умный выбор для современных пользователей