关于js的一个数据拼接问题

新手上路,请多包涵

现有如下两组数据

var arr1 = [{ "a": 1, "b": 2, "c": 3 }];
var arr2 = [{ "d": 4, "f": 5 }];

怎么样能拼接成这样的

var arr3 = [
    {"a": 1, "d": 4}, 
    {"a": 1, "f": 5}, 
    {"b": 2, "d": 4}, 
    {"b": 2, "f": 5},
    {"c": 3, "f": 5}
]
阅读 1.4k
3 个回答

通过for in 双循环具体代码如下 .

var arr1 = [{ "a": 1, "b": 2, "c": 3 }];
var arr2 = [{ "d": 4, "f": 5 }];
var arr3= []

for (key1 in arr1[0]){
    for(key2 in arr2[0]){
        arr3.push({[key1]:arr1[0][key1],[key2]:arr2[0][key2]})
    }
}
console.log(arr3);
function merge(...args) {
    const cartesian = function*(arr) {
        if (!arr.length) {
            yield {};
        } else {
            const [[obj], ...rest] = arr;
            for (const key in obj) {
                for (const item of cartesian(rest)) {
                    yield { [key]: obj[key], ...item };
                }
            }
        }
    };
    const ret = [];
    for (const obj of cartesian(args)) ret.push(obj);
    return ret;
}
console.dir(merge(
    [{ a: 1, b: 2, c: 3 }],
    [{ d: 4, e: 5 }],
    [{ f: 6 }]
));

如果期望是下面

//期望
 var arr3 = [
    {"a": 1, "d": 4}, 
    {"a": 1, "f": 5}, 
    {"b": 2, "d": 4}, 
    {"b": 2, "f": 5},
    {"c": 3, "f": 5},
    {"c": 3, "d": 4}
]

方法可以是这样

function spcz(arr1,arr2) {
   const obj1 = arr1[0];
   const obj2 = arr2[0];
   let arr3 = [];
   for(item1 in obj1) {
       for(item2 in obj2) {
           arr3.push(Object.assign({[item1]:obj1[item1]},{[item2]:obj2[item2]}));
       }
   }
   return arr3;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题