在 javascript 中的 JSON 对象中连接 JSON 数组

Posted

技术标签:

【中文标题】在 javascript 中的 JSON 对象中连接 JSON 数组【英文标题】:Concatenate JSON arrays in a JSON objects in javascript 【发布时间】:2014-10-31 02:47:42 【问题描述】:

我有一个这样的 JSON 响应:

"result":[["abc","de"],["fgh"],["ij","kl"]]

我希望响应格式为:

"result":["abc","de","fgh","ij","kl"]

我怎样才能做到这一点?

【问题讨论】:

取决于您创建响应的语言 您的意思是要在 javascript 中转换响应吗? 你能得到的最糟糕的回应:P x.split("[").join("").split("]").join("").replace(":",":[").replace("","]"); Merge/flatten an Array of Arrays in JavaScript? 的可能重复项 【参考方案1】:

来自mozilla docs

var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) 
  return a.concat(b);
);
// flattened is [0, 1, 2, 3, 4, 5]

【讨论】:

【参考方案2】:
var test="result":[["abc","de"],["fgh"],["ij","kl"]];
var tmp=[];
for(var i in test.result)
    for(var j in test.result[i])
      tmp.push(test.result[i][j]);
    

test.result=tmp;
alert(JSON.stringify(test));

jsfiddle linkhttp://jsfiddle.net/fu26849m/

【讨论】:

【参考方案3】:

jsFiddle

var arrayToFlatten = [[0, 1], [2, 3], [4, 5]];

原生(来自Merge/flatten an array of arrays in JavaScript?):

var flattenedNative = arrayToFlatten.reduce(function(a, b) 
  return a.concat(b);
);
alert(flattenedNative); // 0,1,2,3,4,5

jQuery(来自How to flatten array in jQuery?):

var flattenedJQuery = $.map(arrayToFlatten, function(n) 
  return n;
);
alert(flattenedJQuery); // 0,1,2,3,4,5

原生替代(来自Merge/flatten an array of arrays in JavaScript?):

var flattenedNativeAlt = [].concat.apply([], arrayToFlatten);
alert(flattenedNativeAlt); // 0,1,2,3,4,5

【讨论】:

【参考方案4】:

我的第一个建议是你应该直接创建你想要使用的 json。 得到后请勿修改。

你也可以用这个,这会给你想要的价值。:

    var mainText= JSON.parse('"result":[["abc","de"],["fgh"],["ij","kl"]]');
    var arr = [];
    for(var val1 in mainText.result)
       
        arr = arr.concat(mainText.result[val1]);
       
    mainText.result = arr;
    console.log(JSON.stringify(mainText));

【讨论】:

【参考方案5】:

reduce()concat() 函数可以组合来展平数组:

var json = "result":[["abc","de"],["fgh"],["ij","kl"]];

function concatArrays(a, b)  return a.concat(b); 
json.result = json.result.reduce(concatArrays);

console.log(json);  //"result":["abc","de","fgh","ij","kl"]

查看实际操作:http://jsfiddle.net/cazomufn/

【讨论】:

【参考方案6】:

我喜欢lodash' flatten(如果你能忍受另一个依赖的话。)

json.result = _.flatten(json.result);  

//  result:['abc','de','fgh','ij','kl'] 

例如,reduce 在 IE9 之前不受支持,但 lodash 仍然可以工作(兼容性构建)。

【讨论】:

以上是关于在 javascript 中的 JSON 对象中连接 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

在 express.js 中连接到 Mongodb-Native-Driver

在 javascript 中的 JSON 对象中连接 JSON 数组

如何从 JavaScript 中的 Razor 模型对象获取 JSON 对象

在 NodeJS 中连接到 websocket 时出现协议错误

javascript中的java JSON对象

访问 JSON 数组中的对象 (JavaScript) [重复]