在 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 中转换响应吗? 你能得到的最糟糕的回应:Px.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 link
http://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 对象