【发布时间】:2020-12-07 20:14:22
【问题描述】:
我正在尝试用 JavaScript 编写一个函数,它将一个 id 数组作为输入并生成下面提到的相应输出。
以下是预期的情况:
当输入数组为:
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!
【问题讨论】:
-
正确的缩进会告诉你为什么它不能按预期工作。您创建 q 并在循环中返回它。
标签: javascript