Доброго времени суток, мои познания в JS весьма скромны, и я уже бьюсь несколько дней над вроде простой задачей. Есть объект:
var items={};
items[1]={
param_1:"10",
param_2:"521А2",
param_3:"A",
anydata:"bla-bal"
}
items[2]={
param_1:"15",
param_2:"521А1",
param_3:"B",
anydata:"bla-bal"
}
items[50]={
param_1:"10",
param_2:"521А3",
param_3:"C",
anydata:"bla-bal"
}
Нужно не сколько отсортировать, а исключить ненужные элементы объекта во время перебора, сейчас я перебираю данный объект с помощью цикла for и в процессе сравниваю параметры: PARAM_1, PARAM_2, PARAM_3 и получается очень много IF ELSE
if(items[i].param_1 == param_1){ console.log(items[i]); }
if(items[i].param_2 == param_2){ console.log(items[i]); }
if(items[i].param_3 == param_1){ console.log(items[i]); }
if(items[i].param_1 == param_1 && items[i].param_2 == param_2){ console.log(items[i]); }
if(items[i].param_2 == param_2 && items[i].param_3 == param_3){ console.log(items[i]); }
if(items[i].param_3 == param_3 && items[i].param_1 == param_1){ console.log(items[i]); }
Ну и так далее... Собственно а нужна то по сути простая функция которая принимает 3 параметра, и возвращает отсортированный объект где совпадают между собой эти параметры если они заданы, то есть некоторые параметры могут отсутствовать Например:
get_table({param_1:10,param_2:'521А2',param_3:'A',});
get_table({param_2:'521А1',param_2:'B',});
function get_table(data){
for (i in items) {
//Магический IF =)
if(все параметры сходятся у элемента items[i]){
consle.log(items[i]);
}
}
}
Как-то так?
var items={};
items[1]={
param_1:"10",
param_2:"521А2",
param_3:"A",
anydata:"bla-bal"
};
items[2]={
param_1:"15",
param_2:"521А1",
param_3:"B",
anydata:"bla-bal"
};
items[50]={
param_1:"10",
param_2:"521А3",
param_3:"C",
anydata:"bla-bal"
};
function filter(items, test) {
var res = [];
for (item in items) {
var match = true;
for (field in test) {
if (items[item][field] !== test[field]) {
match = false;
break;
}
}
if (match)
res.push(items[item]);
}
return res;
}
console.log(filter(items, {param_3: "B"}));
console.log(filter(items, {param_1: "10", param_3: "C"}));
var items={};
items[1]={
param_1:"10",
param_2:"521А2",
param_3:"A",
anydata:"bla-bal"
};
items[2]={
param_1:"15",
param_2:"521А1",
param_3:"B",
anydata:"bla-bal"
};
items[50]={
param_1:"10",
param_2:"521А3",
param_3:"C",
anydata:"bla-bal"
};
function filter(items, test) {
var res = [];
for (item in items) {
var match = true;
for (field in test) {
if (items[item][field] !== test[field]) {
match = false;
break;
}
}
if (match)
res.push(items[item]);
}
return res;
}
console.log(filter(items, {param_3: "B"}));
console.log(filter(items, {param_1: "10", param_3: "C"}));
Продвижение своими сайтами как стратегия роста и независимости