Javascript 如何使用lodash';s与自定义时间戳属性合并

Javascript 如何使用lodash';s与自定义时间戳属性合并,javascript,lodash,Javascript,Lodash,我正在尝试将两个对象合并在一起,我希望两个时间戳中时间戳较高的属性是获胜的属性。这是可能的还是应该使用不同的函数?请注意,此对象包含用户首选项,并且可以包含无限数量的属性 以下是我试图与期望的结果合并的内容 let preferences1 = { 'favorite-color': { timestamp: 1, data: 'red' }, 'nickname': { timestamp: 1, data: 'dude' } }; let p

我正在尝试将两个对象合并在一起,我希望两个时间戳中时间戳较高的属性是获胜的属性。这是可能的还是应该使用不同的函数?请注意,此对象包含用户首选项,并且可以包含无限数量的属性

以下是我试图与期望的结果合并的内容

let preferences1 = {
  'favorite-color': {
    timestamp: 1,
    data: 'red'
  },
  'nickname': {
    timestamp: 1,
    data: 'dude'
  }
};

let preferences2 = {
  'favorite-color': {
    timestamp: 2,
    data: 'black'
  }
};

let outcome = {
  'favorite-color': {
    timestamp: 2,
    data: 'black'
  },
  'nickname': {
    timestamp: 1,
    data: 'dude'
  }
};

const result = merge({}, preferences1, preferences2);

如果您使用的是lodash 4+,那么该函数在这里似乎会有所帮助

let preferences1 = {
  'favorite-color': {
    timestamp: 1,
    data: 'red'
  },
  'nickname': {
    timestamp: 1,
    data: 'dude'
  }
};

let preferences2 = {
  'favorite-color': {
    timestamp: 2,
    data: 'black'
  }
};

let outcome = _.mergeWith({}, preferences1, preferences2, function (obj, src) {
  if (!obj || !obj.timestamp || !src.timestamp) return undefined;
  if (obj.timestamp > src.timestamp) return obj;
  return src;
});

检查时间戳并让它确定合并函数调用的参数顺序。该对象是动态的“用户首选项”,包含数量不受限制的属性。我不确定您的意思。你能提供更多的信息吗?合并的示例输入是什么?所需的输出是什么?你能显示到目前为止的实际代码吗?请查看编辑。这有用吗?