如何使用javascript将对象值连接起来?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (521)

场景:

const ob1 = {
  'a': 'a1',
  'b': 'bVal'
}
const ob2 = {
  'a': 'a2',
  'c': 'cVal'
}

想以生成输出对象的方式合并上述对象:

const output = {
  'a': 'a1, a2',
  'b': 'bVal',
  'c': 'cVal'
}

是否有库方法来实现这一目标?

提问于
用户回答回答于

这是另一种版本,适用于任意数量的输入对象

用途Array.reduceObject.entries

const ob1 = {
  'a': 'a1',
  'b': 'bVal'
}
const ob2 = {
  'a': 'a2',
  'c': 'cVal'
}

const result = [ob1, ob2].reduce((res, item) => {
  Object.entries(item).forEach(([k, v]) => res[k] = res[k] ? res[k] + ', ' + v : v);
  return res;
}, {});

console.log(result);
用户回答回答于

可以使用 Object.assign()和Object.entries():

  • 只需创建第一个对象的副本即可。
  • 迭代所有属性ob2并检查输出对象中是否存在该键。如果它存在而不是简单地连接值,如果不是将该属性添加到输出对象。
const ob1 = {
  'a': 'a1',
  'b': 'bVal'
}
const ob2 = {
  'a': 'a2',
  'c': 'cVal'
};
let output = Object.assign({}, ob1);
Object.entries(ob2).forEach(entry=>{
  if(output[entry[0]])
    output[entry[0]] += ","+entry[1];
   else
    output[entry[0]] = entry[1];
});

console.log(output);

扫码关注云+社区

领取腾讯云代金券