首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript lodash按第一项合并数组项

Javascript lodash按第一项合并数组项
EN

Stack Overflow用户
提问于 2019-07-15 21:18:42
回答 2查看 78关注 0票数 0

有一种方法可以按第一项合并数组项

代码语言:javascript
复制
_.merge({a: 1, c: [{y: 8}, {z: 9}]}, {b: 0, c: [{x: 5}]})

结果:

代码语言:javascript
复制
{
   "a": 1,
   "c": [
      {
         "y": 8,
         "x": 5
      },
      {
         "z": 9
      }
   ],
   "b": 0
}

我想要的:

代码语言:javascript
复制
{
   "a": 1,
   "c": [
      {
         "y": 8,
         "x": 5
      },
      {
         "z": 9,
         "x": 5 // <-------------------------
      }
   ],
   "b": 0
}

我希望将一个源对象合并到另一个像模型一样使用的对象。在数组的情况下,模型只定义集合的第一项,源对象应该将第一个模型项反映到所有集合项中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-15 22:25:51

我实际上不会这样做,因为它可能会让人非常困惑(特别是当你的数组有超过1项的时候)。

您可以使用_.mergeWith(),并手动迭代和合并数组项。

代码语言:javascript
复制
const mrg = (o1, o2) => _.mergeWith(
  o1, o2,
  (a, b) => _.isArray(a) && _.isArray(b) ?
    a.map((item, i) => mrg(item, b[Math.min(i, b.length - 1)]))
    : 
    undefined
)

const result = mrg({a: 1, c: [{y: 8}, {z: 9}]}, {b: 0, c: [{x: 5}]})

console.log(result)
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.14/lodash.js"></script>

票数 1
EN

Stack Overflow用户

发布于 2019-07-15 22:26:05

使用_.mergeWith

代码语言:javascript
复制
function customizer(objValue, srcValue) {
    if (_.isArray(objValue) && _.every(objValue, _.isObject) &&
        _.isArray(srcValue) && _.every(srcValue, _.isObject) )
    {   
        let newObj = Object.assign(...srcValue)
        _.forEach(objValue, function(obj, index) {
            objValue[index] = Object.assign(obj, newObj)
        });
    }
}

let a = {a: 1, c: [{y: 8}, {z: 9}]}
let b = {b: 0, c: [{x: 5}]}
let res = _.mergeWith(a, b, customizer)

结果:

代码语言:javascript
复制
{
    "a": 1,
    "c": [
        {
            "y": 8,
            "x": 5
        },
        {
            "z": 9,
            "x": 5
        }
    ],
    "b": 0
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57040619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档