将对象转换成二维数组

arrStart = {a: [1,2,3,4], b: [1,2,3,4]};
转成
arrEnd = [[1,1],[2,2],[3,3],[4,4]];

阅读 3.8k
4 个回答

题目有几个问题:
1.用哪两个key
2.ab顺序没有说
3.两个长度不同的数组咋办

假定顺序先a后b吧,用数组长度较短的为准:

arrStart = {a: [1,2,3,4], b: [1,2,3,4]};
arr1 = arrStart.a;
arr2 = arrStart.b;

let c;
if (arr1.length <= arr2.length) {
    c = arr1.map(function(e, i) {
        // 先a后b
        return [e, arr2[i]];
    });
} else {
    c = arr2.map(function(e, i) {
        // 先a后b
        return [arr1[i], e];
    });
}
const object1 = {
  a: [1,2,3,4],
  b: [1,2,3,4]
};

let objArray=[];
for (let [key, value] of Object.entries(object1)) {
  let res = value.map((item)=>{
    return [item,item];
  })
  objArray.push(res)
}

// objArray 应该是你想要的结果

感谢大家,有朋友也推荐了方法

  1. const main = (obj) =>

    Object.keys(obj).reduce(

    (a, key) =>
        obj[key].map((item, index) => {
        a[index] = a[index] || [];
        return a[index].concat(item);
    }),

    []

);

2.function main(value) {

let index = 1;
let arr = Object.values(value);
let result = arr[0].map(item => [item]);
return function() {
while(index < arr.length) {
    arr[index].map((item, i) => result[i].push(item));
    index++;
    }
    return result;
}

}

先jsonencode再jsondecode加TRUE就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题