Je commencerai par dire, je comprends qu'il y a beaucoup de manières de faire ceci. Cette question est un effort pour comparer différentes versions.Comment vérifier un objet contient un ensemble de propriétés
Je comprends aussi que nous cherchons à être un site d'assurance qualité, pas un site QAAAAAAA ....
Je vais donc affiner la question pour la rendre plus ciblée et aboutir à une réponse.
un objet Étant donné:
var obj = {a: 1, b: 2, c: 3};
savoir si les touches suivantes sont présentes:
var keys = ['a', 'b', 'c', 'd']; // 'd' would be flagged although a boolean would suffice
Idéalement, je voudrais le faire dans ES5, mais ES6 est plus que bienvenue.
Idéalement sans l'utilisation de lodash, mais il est plus que bienvenu.
Je suis sûr qu'il ya une belle combinaison des indigènes méthodes Array qui va travailler:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
L'objectif est d'avoir une fonction ou d'une ligne de code qui est petit et concis plutôt que quelque chose comme :
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);
Je patauge avec la première offre:
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);
Essayez '_.difference' dans lodash – thefourtheye
' Object.keys (obj) .filter (e => keys.indexOf (item)! == -1); ' – Tushar
Si J'ai retiré ma tentative et fait semblant de ne pas savoir comment le faire, aurait-il encore besoin de passer à CR? –