2016-02-23 27 views
0

返回某些鍵,這是我的目標:如何從一個對象

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

如何返回除一個或多個鍵以外的所有鍵,例如abc

我已經嘗試了一些排列,但似乎無法得到它,下面的1,或者也許這是不可能的這種方式?

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

'K = ='a'&& k!=='b''? – Bergi

+0

@Bergi tks認爲你是簡單的答案。 – HattrickNZ

回答

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

「* ...所有鍵**除了** 1個或更多鍵... *」 – Bergi

+0

@Bergi固定 良好的呼叫,去得太快 –

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

ES6不包含'Array.prototype.includes()',它是ES7 – isvforall

+1

https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes – isvforall

+0

@isvforall ahh我看到了,我會更新它 – madox2

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