循环对象数组并形成插入

时间:2019-10-27 12:45:32

标签: javascript node.js

我有一个数组。

    var res= [{
        "MATNR": "4",
        "TYPES": [{
            "KSCHL": "PR00",
            "KBETR": "12.000"
        }, {
            "KSCHL": "K005",
            "KBETR": "-10.000"
        }]
    },
    {
        "MATNR": "5",
        "TYPES": [{
            "KSCHL": "PR00",
            "KBETR": "12.000"
        }, {
            "KSCHL": "K005",
            "KBETR": "-10.000"
        }]
    }
]

用于处理数组的代码

let insert ='INSERT INTO T VALUES ('
res.forEach((values)=> 
Object.keys(values).forEach(function (item) {
    insert =insert+item.MATNR+','+item.KBETR
}) 

);

我必须形成一条插入语句

INSERT INTO T VALUES(4,12.00,-10.00)
INSERT INTO T VALUES(5,12.00,-8.00)

我尝试了循环,但没有得到想要的结果。

2 个答案:

答案 0 :(得分:3)

您可以将map方法与某些模板文字一起使用,以返回一个字符串作为结果。

var res = [{"MATNR":"4","TYPES":[{"KSCHL":"PR00","KBETR":"12.000"},{"KSCHL":"K005","KBETR":"-10.000"}]},{"MATNR":"5","TYPES":[{"KSCHL":"PR00","KBETR":"12.000"},{"KSCHL":"K005","KBETR":"-10.000"}]}]

const string = res.map(({MATNR, TYPES}) => {
  const types = TYPES.map(({KBETR}) => KBETR).join(',')
  return `INSERT INTO T VALUES(${MATNR},${types})`
}).join("\n")

console.log(string)

答案 1 :(得分:0)

当您遍历res.forEach(values => ..)时,每个“值”都是像{ MATNR: SOME_NUMBER, TYPES: [array of objects with keys "KSCHL" and "KBETR"] }之类的对象。

因此,Object.keys(values)不能使您立即访问MATNR和KBETR字段。要获得KBETR部分,您需要检查TYPES字段。

为将来提供参考,请在发布之前格式化代码,以便其他人更易读。 :)