#javascript
#javascript
Вопрос:
Я пытаюсь написать функцию на JavaScript, которая будет принимать массив идентификаторов в качестве входных данных и генерировать соответствующий вывод, упомянутый ниже.
Ниже приведены ожидаемые случаи:
когда входной массив:
ids= [1, 2]
ожидаемый результат:
{
c: 0,
query: {
or: [
{
and: [{
equals: {
field: "emp_id",
value: 36,
}},
{
equals: {
field: "class_id",
value: 1,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 29,
}},
{
equals: {
field: "class_id",
value: 1,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 29,
}},
{
equals: {
field: "class_id",
value: 2,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 36,
}},
{
equals: {
field: "class_id",
value: 2,
},
}
]
}
]
},
a: {}
};
когда входной массив:
ids = [1,2,3]
ожидаемый результат :
{
c: 0,
query: {
or: [
{
and: [{
equals: {
field: "emp_id",
value: 36,
}},
{
equals: {
field: "class_id",
value: 1,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 29,
}},
{
equals: {
field: "class_id",
value: 1,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 29,
}},
{
equals: {
field: "class_id",
value: 2,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 36,
}},
{
equals: {
field: "class_id",
value: 2,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 36,
}},
{
equals: {
field: "class_id",
value: 3,
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 29,
}},
{
equals: {
field: "class_id",
value: 3,
},
}
]
}
]
},
a: {}
};
emp_id: 29 и 36 — это своего рода постоянные значения
, которые всегда будут там
Вот что я пытаюсь сделать:
function fc(ids){
for (let i =0 ;i< ids.length;i ){
let q = {
c: 0,
query: {
or: [
{
and: [{
equals: {
field: "emp_id",
value: 36,
}},
{
equals: {
field: "class_id",
value: ids[i],
},
}
]
},
{
and: [{
equals: {
field: "emp_id",
value: 29,
}},
{
equals: {
field: "class_id",
value: ids[i],
},
}
]
}
]
},
a: {}
};
return q;
}
}
console.log(fc([1,2,3])); // logs the output with only id:1 not 2!
Комментарии:
1. правильный отступ покажет вам, почему он работает не так, как ожидалось. Вы создаете q и возвращаете его внутри цикла.
Ответ №1:
это может быть полезно
const fc = (classIds) => {
const empIds = [29, 36];
const arr = [];
const query = (classId, empId) => {
return {
and: [
{
equals: {
field: "emp_id",
value: empId,
},
},
{
equals: {
field: "class_id",
value: classId,
},
},
],
};
};
classIds.forEach((cId) => {
empIds.forEach((eId) => {
arr.push(query(cId, eId));
});
});
return {
c: 0,
query: {
or: arr,
},
a: {},
};
};
console.log(fc([1, 2, 3]));