如何将JSON对象合并到1个JSON对象中

时间:2018-07-16 21:20:25

标签: javascript json

给出:

var result1 = [{'p1':'v1'}];  
var result2 = [{'p2':'v2'}];  
var array1 = [{'p3':'v3'},{'p4':'v4'}];  

规则:
如果数组具有一个属性,则将属性添加到主数组以返回。
如果数组具有多个属性,请添加标签并保持数组原样。

https://jsfiddle.net/3unx0hsa/5/

function mergeJson(data) {  
    let newarray1 = [];

    for (let index = 0; index < resultsArray.length; index++) {
        let element = resultsArray[index][0];

        if (element.length === 1) {            
            newarray1.push(element);
        }

        if (element.length > 1) {
            var x = `{data${index}: ${element}`;
            newarray1.push(x);
        }
    }
}

插图: enter image description here

3 个答案:

答案 0 :(得分:3)

模板字符串文字创建一个字符串。您需要一个对象文字

var x = {[`data${index}`]: element};

var result1 = [{'p1': 'v1'}];
var result2 = [{'p2': 'v2'}];
var array1 = [{'p3': 'v3'}, {'p4': 'v4'}];

let x = mergeJson([result1, result2, array1]);
console.log(x);

function mergeJson(resultsArray) {
  let newarray1 = [];

  for (let index = 0; index < resultsArray.length; index++) {
    let element = resultsArray[index];

    if (element.length === 1) {
      newarray1.push(element[0]);
    }

    if (element.length > 1) {
      var x = {[`data${index}`]: element};
      newarray1.push(x);
    }

  }

  return newarray1;
}

答案 1 :(得分:1)

此行之后:var x = `{data${index}: ${element}`;,x的值是一个字符串。那就是您在输出中看到的。将该行更改为以下内容:

var x = {`{data${index}`: element};

那应该给您期望的结果。

答案 2 :(得分:1)

使用这种类型的功能,您将能够显示Json值

//JSON = objects and you have to call them for examle:

var result1 = [{'p1':'v1'}];  
var result2 = [{'p2':'v2'}];  
var array1 = result1.concat(result2);
for (i in array1){
 array1[i];
for(x in array1[i]){
document.getElementById("test").innerHTML += x+" - "+array1[i][x] +" <br>";
}
}
<div id="test"></div>