javascript 返回包含原始对象的所有字段的单个对象

omhiaaxx  于 2022-10-30  发布在  Java
关注(0)|答案(2)|浏览(195)

编写一个函数,该函数接受任意数量的对象,并返回包含原始对象的所有字段的单个对象。
如果在几个对象中发现了相同的键,你应该保留第一次遇到的含义。我的解答没有给予正确的结果。

function zip() {
    const appliedValues = Object.assign({}, ...objects);
    return appliedValues;
}

const objects = [
  { foo: 5, bar: 6 },
  { foo: 13, baz: -1 } // foo - repeating key
];

zip(...objects); // I expect { foo: 5, bar: 6, baz: -1 }
bihw5rsg

bihw5rsg1#

实现这一点的一个非常快速的更改是简单地反转传入的数组,这将导致在可能的情况下使用较早的项。
为了避免改变原始数组,我们可以使用[...objects]创建副本,然后使用.reverse()documentation

function zip() {
  const appliedValues = Object.assign({}, ...[...objects].reverse());
  return appliedValues;
}

const objects = [
  { foo: 5, bar: 6 },
  { foo: 13, baz: -1 }
];

console.log(zip(...objects));
irlmq6kh

irlmq6kh2#

DBS的回答很好,我提供了一个reduce()的解决方案

function zip(...data) {
  let result = data.reduce((a,c) => {
    Object.keys(c).forEach(k => {
       if(!a[k]){
         a[k] = c[k]
       }
     })
    return a
   },{})
  return result
}

const objects = [
  { foo: 5, bar: 6 },
  { foo: 13, baz: -1 } // foo - repeating key
];

console.log(zip(...objects)); // I expect { foo: 5, bar: 6, baz: -1 }

相关问题