我會開始說,我知道有很多方法可以做到這一點。這個問題是努力比較不同的版本。如何檢查一個對象包含一組屬性
我也明白我們正在尋找SO是質量保證網站,而不是QAAAAAAA網站。
因此,我將優化問題,使其更加專注並最終得到一個答案。
給定一個對象:
var obj = {a: 1, b: 2, c: 3};
找出如果下面的項存在:
var keys = ['a', 'b', 'c', 'd']; // 'd' would be flagged although a boolean would suffice
理想我想這樣做的ES5,但ES6更比歡迎。
理想情況下不使用lodash,但它更受歡迎。
我敢肯定有原生Array方法一個可愛的組合會工作:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
目的是爲了有一個函數或代碼行這是小而簡潔的,而不是像:
var obj = {a: 1, b: 2, c: 3};
var keys = ['a', 'b', 'c', 'd'];
var found = keys.length;
for (var i = 0; i < keys.length; i++) {
if (obj.hasOwnProperty(keys[i])) {
found--;
}
}
console.log("Missing:", found);
我會第一個發行韋德:
var obj = {a: 1, b: 2, c: 3};
var keys = ['a', 'b', 'c', 'd'];
var allPresent = Object.keys(obj).filter(function(item) {
return keys.indexOf(item) !== -1;
}).length === keys.length;
console.log("All present:", allPresent);
嘗試'_.difference' in lodash – thefourtheye
'Object.keys(obj).filter(e => keys.indexOf(item)!== -1);' – Tushar
If我刪除了我的嘗試,假裝不知道有什麼辦法去做,它是否仍然需要轉向CR? –