我想将不存在的项目推送到已经声明的对象中,如果它们尚不存在,请使用 lodash 进行角度

I'd like to push non-existing items inside an already declared object if they don't already exist using lodash in angular

本文关键字:不存在 如果 请使用 lodash 对象 项目 声明      更新时间:2023-09-26

我是 lodash 的新手,但正如标题所述"如果不存在不存在,我想将不存在的项目推送到已经声明的对象中",也就是说,如果我有

var lessdata = {
    "id": 1004,
    "name": "some event",
    "bookmarked": false        //not in moredata and I'd like to keep the var as is
 };
var moredata = {
    "id": 1004,
    "name": "some event",
    "time": {                       //from here
      "hours": 2,
      "minutes": 00,
      "currency": "USD"
    },
    "place": "some place"        //to here is new without '"bookmarked": false'
  };

我想将我的结果加载回 lessdata 变量中,让我的结果看起来像这样

var lessdata = {
        "id": 1004,
        "name": "some event",
        "time": {                       
          "hours": 2,
          "minutes": 00,
          "currency": "USD"
        },
        "place": "some place",
         "bookmarked": false        
  };

我坚持知道在角度中适当地使用 lodash,并且不确定我是否需要使用 angualar 的 foreach。

我涉足了两种方法。

版本 1

lessdata= _.uniq(lessdata, function(moredata) {
            return moredata;
          });

版本 2

 angular.forEach(lessdata, function(lkey, lvalue) {
    console.log("[-]lessdata---lkey: " + lkey + ", lvalue: " + lvalue)
    angular.forEach(moredata, function(mkey, mvalue) {
      console.log("[+]moredata---mkey: " + mkey + ", mvalue: " + mvalue)
      lessdata=_.uniq(lessdata, function(moredata) {
        return moredata;
      });
    })
  })
  $scope.event = lessdata

我假设使用_.uniq是最好的方法? 任何帮助将不胜感激,我在这里创建了一个代码笔。

TLDR:只需阅读标题

这就是

lodash.defaults的作用:

将源对象的自有和继承的可枚举属性分配给解析为 undefined 的所有目标属性的目标对象。

lodash.defaults(lessdata, moredata);