Lodash 4:如果对象属性包含字符串的特定部分,如何省略它们?

Lodash 4: How to omit Object properties if they contain a certain part of a string?

是否可以使用 Lodash 的 omit 方法并删除可能包含附加到它们的字符串 _old 的键?

例如,这是我的 JSON 对象:

{
  "name": "Canada",
  "shortName": "CanadaEH",
  "shortName_old": "Canada",
  "fullName": "The NEW Republic of Canada",
  "fullName_old": "The Republic of Canada",
  ...etc...
}

我已经在我的应用程序中导入了 omit 包,如下所示:

import { omit } from 'lodash'

当我这样做时这有效:

filteredFields() {
      return omit(this.myObj, ['name'])
    }

我得到了没有那些省略的属性的对象,正如预期的那样。

但是,像这样添加它不起作用:

return omit(this.myObj, ['name', '_old'])

我怎样才能同时省略可能包含 _old 的键?

_.omitBy() 方法接受一个谓词函数,该函数使用 属性 的当前值和键调用。然后您可以检查密钥是否存在该字符串。

const obj = {
  "name": "Canada",
  "shortName": "CanadaEH",
  "shortName_old": "Canada",
  "fullName": "The NEW Republic of Canada",
  "fullName_old": "The Republic of Canada",
}

const result = _.omitBy(obj, (v, k) => k.endsWith('_old'))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>