这是我的目标:
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个或更多键以外的所有键,例如a
或b
或c
?
我尝试了一些排列,但似乎无法获得,1以下,或者这种方式可能无法实现?
Object.keys(a).filter(function(k) {return k !== ('a','b')})
["a", "c", "d", "e", "f"]
答案 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' ]