如何从对象返回某些键

How to return certain keys from an object

本文关键字:返回 对象      更新时间:2023-09-26

这是我的对象:

a={"a":"1","b":"2","c":"3","d":"4","e":"5","f":"6"}

这将返回所有键:

Object.keys(a)
["a", "b", "c", "d", "e", "f"]

这将返回除"a"之外的所有键:

Object.keys(a).filter(function(k) {return k !== 'a'})
["b", "c", "d", "e", "f"]

如何返回除 1 个或多个密钥(例如 abc 之外的所有密钥?

我已经尝试了一些排列,但似乎无法得到它,下面的 1,或者也许这样是不可能的?

Object.keys(a).filter(function(k) {return k !== ('a','b')})
["a", "c", "d", "e", "f"]
Object.keys(a).filter(function(k) {
  return ["a", "b"].indexOf(k) === -1;
});

只需在匹配的数组中添加所需的键(与 indexOf 一起使用的数组)

如果你想要更便携的东西:

function excludeKeys(obj, keys) {
   return Object.keys(obj).filter(function(k) {
      return keys.indexOf(k) === -1;
    });
}

这样,您可以添加任意数量的排除键。

ES6 (ECMAScript 2015) 您可以使用箭头函数:

Object.keys(a).filter(k => !~['a', 'b', 'c'].indexOf(k));

并非所有环境都支持 ES6,因此您可以使用 ES5 替代方案:

Object.keys(a).filter(function(k) {
    return !~['a', 'b', 'c'].indexOf(k);
});
var a = ["a", "b", "c", "d", "e", "f"]
var b = a.filter(function(k) {return ['a','b'].indexOf(k) < 0})
// b => [ 'c', 'd', 'e', 'f' ]