数组中的javascript排序对象
帮助新手解决以下问题。 我有一个目标:数组中的javascript排序对象,javascript,arrays,json,object,Javascript,Arrays,Json,Object,帮助新手解决以下问题。 我有一个目标: var arr = [ [{a:1},{a:2}], [{b:1},{b:2}] ]; 如何将其转换为: var arr1 = [ [{a:1},{b:1}], [{a:2},{b:2}], ]; 非常感谢大家的回答! 我正在尝试将json响应从服务器拆分到各个对象。 我这里有一个json: var src={ img: [ { alt: "
var arr = [
[{a:1},{a:2}],
[{b:1},{b:2}]
];
如何将其转换为:
var arr1 = [
[{a:1},{b:1}],
[{a:2},{b:2}],
];
非常感谢大家的回答!
我正在尝试将json响应从服务器拆分到各个对象。
我这里有一个json:
var src={
img: [
{
alt: "",
src: "http://1.jpg",
width: "125"
},
{
alt: "",
src: "http://2.jpg",
width: "125"
}
],
a: [
{
href: "http://1.html",
content: "title1"
},
{
href: "http://2.html",
content: "title2"
}
],
dd: [
{
p: "content1"
},
{
p: "content2"
}
]
}
我想将json转换为单个对象:
var src1 = [
{
alt: "",
src: "http://1.jpg",
width: "125",
href: "http://1.html",
content: "title1",
p: "content1"
},
{
alt: "",
src: "http://2.jpg",
width: "125",
href: "http://2.html",
content: "title2",
p: "content2"
},
]
你需要做这样的事情,其余的你需要根据你的真实数据来计算
var arr1 = [];
var firstTime = 1;
for(var i = 0; i < arr.length; i++) {
if(firstTime == 1){
for(var j=0; j < arr[0].length; j++){
arr1.push(new Array());
}
firstTime = 0;
}
for(var j=0; j < arr[0].length; j++){
arr1[j].push(arr[i][j]);
}
}
var arr1=[];
var firstTime=1;
对于(变量i=0;i
问题更新后。
您可以使用以下方法获得所需内容
var src2 = new Array();
function convert(object){
var firstTime = 1;
for(var key in object){
var property = object[key];
if(firstTime == 1){
for(var i = 0; i < property.length; i++){
src2.push(new Object());
}
firstTime = 0;
}
for(var i = 0; i < property.length; i++){
for(var key1 in property[i]){
src2[i][key1] = property[i][key1];
}
}
}
}
var src2=新数组();
函数转换(对象){
var firstTime=1;
for(对象中的变量键){
var属性=对象[键];
如果(首次==1){
对于(变量i=0;i
用法:convert(src1);
这是我得到的
基本上,我将复杂数组分解为单个数组。进行比较,然后将数组重建为初始数组的相同维度
JS小提琴:
var-arr=[
[{a:1},{a:2}],
[{b:1},{b:2}]
];
var newArr=[]
//步骤1:将所有数据放入一个数组中
对于(var i=0;i,如果您提供有关任务的更多详细信息,将更容易提供帮助。您是否尝试按键(升序)或值(相等)对内部对进行分组?任何其他/附加标准?请澄清或提供更多细节或更详细的示例,说明您希望做什么。@Khnle KevinLe我认为他想做的事情是完全清楚的。我已经用您更新的JSON更新了我的答案。请看一看,让我知道它是否有效。
var arr = [
[{a:1},{a:2}],
[{b:1},{b:2}]
];
var newArr = []
//Step 1: Get all the data into one array
for(var i = 0; i<arr.length; i++) {
for(var j = 0; j<arr[i].length; j++) {
newArr.push(arr[i][j]);
}
}
//Step 2: Sort that data
newArr.sort(function(a, b) {
var aVal = a.a || a.b
, bVal = b.a || b.b;
return aVal - bVal;
});
var finalArray = []
, tempArray = [];
//Step 3: Get the Array size of the initial Array
var arrayCount = arr[0] ? arr[0].length : 0;
//Step 4: Loop through the sorted Array
for(var i = 0; i<newArr.length; i++) {
//Step 5 Determine if it meets the size reqs, then push the subarray
if((i+1) % arrayCount === 0 ) {
tempArray.push(newArr[i]);
finalArray.push(tempArray);
tempArray = [];
} else {
tempArray.push(newArr[i]);
}
}
console.log(finalArray);