对象值的Javascript数组转换为多维数组

Posted

技术标签:

【中文标题】对象值的Javascript数组转换为多维数组【英文标题】:Javascript Array of object value into multidimensional array 【发布时间】:2019-06-15 17:15:49 【问题描述】:

我正在用 NodeJS 学习 expressJS。

我正在尝试将多行插入到 mysql 表中。由于批量插入查询需要像

这样的数据
[["a",1], ["b",2], ["c",3]]

如何将我的对象数组转换为这种形式?这是我的 JSON 帖子数据

[
 
    "productID" : 1,
    "stock": -3
 ,
 
    "productID" : 1,
    "stock": 5
 
]

如何将这样的 JSON 对象转化为多维数组?

[[1,-3],[1,5]]    

这是我迄今为止尝试过的。

let promises = []
req.body.map((n) => 
  promises.push(new Promise(resolve => 
    let  productID, stock  = n
    let values = 
      PRODUCT_ID: productID,
      STOCK: stock
    
    let sql = 'INSERT INTO product_stock_history SET ?'
    db.connection.query(sql, values, (err, results) => 
      if (err) 
        console.log("Failed to add stocks record: " + err)
        res.sendStatus(500)
        return
       else 
        res.send("Stock record has been added")
      
    )
  ))
)

上面的代码正在运行,但最后我的 mySQL 语法有错误,我认为这与承诺有关。我不熟悉承诺:)

Error: Can't set headers after they are sent.

所以我想要实现的只是没有 Promise 的映射。

谢谢

【问题讨论】:

您好,非常感谢您的意见! :) 我已经用我尝试过的代码编辑了这个问题。给您带来的不便,我们深表歉意 【参考方案1】:

您可以像这样将Object.values 作为参数传递给map

const input = [
 
    "productID" : 1,
    "stock": -3
 ,
 
    "productID" : 1,
    "stock": 5
 
]

const output = input.map(Object.values)
console.log(output)

【讨论】:

以上是关于对象值的Javascript数组转换为多维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何将多维数组转换为json对象[关闭]

Array.reduce 将多维数组转换为对象数组

在 PHP 中将多维数组转换为 XML 对象 [重复]

如何将 Azure 流分析中的“类字典”结构转换为带有 javascript UDF 的多维数组?

如何将多维数组转换为Laravel中的集合

mysql表中的javascript多维数组-不知道那种对象对象是啥