我有一个带有一些键的对象,我想只保留一些键及其值?

我试着用滤镜:

Const data = { aaa级:111 abb: 222, bbb: 333 }; Const result = _。filter(data, (value, key) => key. startswith ("a")); console.log(结果); < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js " > < /脚本>

但是它会打印一个数组:

[111, 222]

这不是我想要的。

如何使用lodash?或者如果lodash不起作用的话?


当前回答

你可以使用_.省略()函数。

它接受筛选的键作为一个字符串数组,如下所示:

var object = { a: 1, b: 2, c: 3 }
_.omit(object, ['a', 'c'])
// => { b: 2 }

其他回答

只需将过滤器更改为omitBy

Const data = {aaa: 111, abb: 222, bbb: 333}; Const result = _。omitBy(data, (value, key) => !key. startswith ("a")); console.log(结果); < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js " > < /脚本>

Lodash有一个_。pickBy函数,它所做的正是您正在寻找的。

Var事物= { “一”:123年, “b”:456年, “abc”:6789 }; Var结果= _。pickBy(thing, function(value, key) { 返回_。startsWith(键,“a”); }); Console.log (result.abc) // 6789 Console.log (result.b) // undefined < script src = " https://cdn.jsdelivr.net/lodash/4.16.4/lodash.min.js " > < /脚本>

你可以使用_.省略()函数。

它接受筛选的键作为一个字符串数组,如下所示:

var object = { a: 1, b: 2, c: 3 }
_.omit(object, ['a', 'c'])
// => { b: 2 }

纯JS解决方案:

const data = {
  aaa: 111,
  abb: 222,
  bbb: 333
};

const result = Object.keys(data).filter( key => {
  return key.indexOf('a') == 0
}).map( key => {
  return { key: data[key] }
})

console.log(result)

在数据中筛选以字母“a”开头的键 将这些键映射为适当的值,并返回为key:value对象

Const data = { aaa级:111 abb: 222, bbb: 333 }; const result = Object.keys(data).filter((val) => val.includes("a")); console.log(结果);