如何从对象返回某些键

时间:2016-02-23 21:08:32

标签: javascript object key-value

这是我的目标:

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"]

3 个答案:

答案 0 :(得分:2)

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;
    });
}

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

答案 1 :(得分:2)

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);
});

答案 2 :(得分:0)

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' ]