第一个数组怎么变成第二个数组,长度不是固定的,

img
怎么按照顺序依次循环得出第二个数组,长度不是固定的,是有多有少的

题主要的代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~

img


<script>
    var arr = [{ a0: 2 }, { a0: 5 }, { a1: 8 }, { a1: 7 }, { a2: 10 }, { a2: 2 }, { a4: 5 }, { a4: 9 }] 
    var kvKeyIndex = {}, key, keys = [];
    arr.forEach((item, index) => {//遍历收集所有key和对应的key下标
        key = Object.keys(item)[0];
        if (!kvKeyIndex[key]) {
            kvKeyIndex[key] = [];
            keys.push(key);
        }
        kvKeyIndex[key].push(index);
    });
    var newarr = [];
    kvKeyIndex[keys[0]].forEach((indexValue, index) => {
        var item = {};
        keys.forEach(k => {
            item[k] = arr[kvKeyIndex[k][index]][k];
        });
        newarr.push(item)
    });
    console.log(JSON.stringify(newarr))
</script>

组合的规律是什么

a1与a0数量相等吗?


var a = [{a0:1},{a0:2},{a1:0},{a1:3}];
var b = []
for(var i = 0;i<a.length;i++){
 for(var key in a[i]){
   var blen = b.length
   var j=0;
   for(;j<blen;j++){
    if(b[j][key] === undefined){
      b[j][key]=a[i][key];
      break;
    }
   }
   if(j==blen){
    var obj = {};
     obj[key] = a[i][key]
    b.push(obj) 
   }
 }
}
console.log(b)