angular,在执行 lodash 之前删除未使用的数据 _.isEqual

angular, strip unused data before doing a lodash _.isEqual

所以我尝试使用 lodash 的 _.isEqual 方法比较 2 个对象,我有非常简单的函数可以像这样检查

function findMatchingQuery(savedSearch) {  
       if (_.isEqual(savedSearch.data.document.query, $scope.searchResults.minify())) {
             return true;
       }
}

数据有点变化,需要先从里面拉出一段数据再做比较

所以这些对象中的每一个都具有这种格式 -

{
   "name": "item name",
   "showMore": boolean,
   "filters": []
}

我想做的是去掉 showMore 节点。我尝试使用 _.remove 添加一些变量,但是这似乎不起作用,因为 remove 正在寻找键和值。

 var modifiedSavedSearch =  _.remove(savedSearch.data.document.query, { "showMore" });
 var modifiedCurrentSearch =  _.remove($scope.searchResults.minify(), { "showMore" });

有没有一种简单的方法可以在 运行 _.isEqual 之前剥离对象的那些部分?不必是 lodash。谢谢!

是的,omit 应该可以满足您的需求:

var modifiedSavedSearch =  _.omit(savedSearch.data.document.query, { "showMore" });

您可以删除该属性,例如:

delete savedSearch.data.document.query.showMore

您可以使用_.omit删除它,或者您可以使用_.pick选择其余的属性

如果你想彻底摆脱它,你可以这样做:

// assuming this is your variable
var myVar = {
   "name": "item name",
   "showMore": boolean,
   "filters": []
};

// delete the unwanted property
delete myVar.showMore;