【问题标题】:how to add two javascript objects如何添加两个javascript对象
【发布时间】:2020-05-14 05:07:27
【问题描述】:

我对 javascript 对象有疑问,我想添加两个相同的对象结构 在这里他们也是首先他们的对象是字符串

data1 = '{"display:[{"counter":"A023","token":"001"}]"}'
data2 = '{"display:[{"counter":"A013","token":"003"}]"}'

预期结果 新的

data = '{"display:[{"counter":"A023","token":"001"}, {"counter":"A013","token":"003"}]"}'

我已经尝试过这些代码

var data1 = JSON.parse(data1);
var data1 = JSON.parse(data1);
var newdata = $.merge(data1.display, data2.display);

我无法解决这个问题,我不知道该怎么做我也尝试了其他代码

【问题讨论】:

  • 阅读更多关于JavaScript spread syntax的信息。确保...object中的object必须是对象,包括空对象{},否则会报错。

标签: javascript jquery arrays json object


【解决方案1】:

试试这个:

let data1 = '{"display":[{"counter":"A023","token":"001"}]}'
let data2 = '{"display":[{"counter":"A013","token":"003"}]}'

data1 = JSON.parse(data1);
data2 = JSON.parse(data2);

data = JSON.stringify({display: [...data1.display, ...data2.display]})
console.log(data)

【讨论】:

  • 感谢我移动了一步,但我需要它最后的数据应该是字符串
  • @NurbekBoymurodov 立即查看我的编辑。数据现在是字符串
  • 它返回给我这个 {"display":[[{"counter":"205","token":"A021"}],[{"counter":"205","token ":"A022"}]]} 我想要这个 {"display":[{"counter":"205","token":"A021"},{"counter":"205","token": "A022"}]}
  • console.log 删除最外层的 \"\"。尝试运行 typeof data 你会看到它是字符串
  • 是的,它是字符串,只需比较 {"display":[[{"counter":"205","token":"A021"}],[{"counter":"205" ,"token":"A022"}]]} 和这个 {"display":[{"counter":"205","token":"A021"},{"counter":"205","token" :"A022"}]} tere are extra [] between two arrys
【解决方案2】:

假设 JSON 字符串遵循有效格式:

let data1 = '{"display":[{"counter":"A023","token":"001"}]}';
let data2 = '{"display":[{"counter":"A013","token":"003"}]}';

let data = {
  display: JSON.parse(data1).display.concat(JSON.parse(data2).display)
};

console.log(data);

【讨论】:

    【解决方案3】:

    您不想将数据对象用引号括起来。您可以将它们标记为常规对象,然后使用扩展操作来实现您想要的。

    let data1 = {"display:[{"counter":"A023","token":"001"}]"}
    let data2 = {"display:[{"counter":"A013","token":"003"}]"}
    let mergedData = {"display": [...data1.display, ...data2.display]}
    

    【讨论】:

    • 您的语法无效。
    【解决方案4】:

    您可以使用Array.prototype.concat()。您的 data1 和 data2 值也不是有效的 json。我更新了这些值

    let data1 = '{"display":[{"counter":"A023","token":"001"}]}';
    let data2 = '{"display":[{"counter":"A013","token":"003"}]}';
    
    data1 = JSON.parse(data1);
    data2 = JSON.parse(data2);
    
    data1.display = data1.display.concat(data2.display);
    let output = JSON.stringify(data1)
    console.log(output)

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2013-06-23
      • 2014-07-06
      • 2017-09-28
      相关资源
      最近更新 更多