JSON.stringify(array) 用方括号括起来



我正在尝试获取一个数据数组以插入到 sqlite 数据库中的多个列中,我几乎可以处理这个:

function InsertData(dbData){
  var valueArray = [], dataArray = [];
  var values = Object.keys(dbData);
  for(var key in values){
    valueArray[valueArray.length] = values[key];
    dataArray[dataArray.length] = dbData[values[key]];
  }
  console.log("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
  dbData.database.serialize(function(){
    dbData.database.run("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
  });
}

我的数据构造如下:

//app.js
function EventData(title, value, other){
  this.title = title;
  this.value = value;
  this.other = other;
}
EventData.prototype = new dbtools.DBData(usuevents, 'event');
var thisEventData = new EventData('newData', 4, 2);
//dbtools.js
DBData = function(database, table){
  this.database = database;
  this.table = table;
};

控制台.log输出插入事件(标题,值,其他)值(["新数据",4,2])我只需要删除 [] 方括号 (["newData",4,2])。我该怎么做?此外,如果有更好的方法将数据插入 sqlite 我愿意接受建议。谢谢

JSON.stringify(dataArray)将始终返回方括号dataArray因为 是数组类型。相反,您可以字符串化数组的每个元素,然后用逗号分隔它们。

dataArray = dataArray.map(function(e){
  return JSON.stringify(e);
});
dataString = dataArray.join(",");

然后

["newData",4,2]

成为

"newData",4,2

附录:请不要尝试手动replace()括号,因为有一天括号可能会以字符串的形式进入您的数组。 ["Please see ref[1]",4,2]

感谢Drakes和S McCrohan的回答。我发现.replace(/]|[[]/g, '')附加到JSON.stringify(dataArray)

全线JSON.stringify(dataArray).replace(/]|[[]/g, '')

Drake 的回答是我个人的选择,因为代码清楚地表达了意图。但要展示一个替代方案:

var strung = JSON.stringify(dataArray);
console.log(strung.substring(1,strung.length-1));

最新更新