【问题标题】:Write a function which creates dynamic output based on input array in JS在 JS 中编写一个基于输入数组创建动态输出的函数
【发布时间】: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


【解决方案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]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多