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

我试着用滤镜:

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不起作用的话?


只需将过滤器更改为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 " > < /脚本>


下面是一个使用lodash 4.x的例子:

Const data = { aaa级:111 abb: 222, bbb: 333 }; Const result = _。pickBy(data, (value, key) => key. startswith ("a")); console.log(结果); //对象{aaa: 111, abb: 222} < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js " > < /脚本> 打开javascript控制台查看输出


一个非lodash的方法来解决这个相当可读和有效的方式:

函数filterByKeys(obj, keys = []) { Const filtered = {} 钥匙。forEach(key => { if (obj.hasOwnProperty(key)) { 过滤[key] = obj[key] } }) 返回过滤 } const myObject = { 答:1, 乙:“香蕉”, d:零 } const result = filterByKeys(myObject, ['a', 'd', 'e']) Console.log (result) // {a: 1, d: null}


本地ES2019一行程序

Const data = { aaa级:111 abb: 222, bbb: 333 }; const filteredByKey = Object.fromEntries(Object.entries(data).filter(([key, value]) => key. startswith ("a"))) console.log (filteredByKey);


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


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

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

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对象