数组中的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);