Disons que j’ai un 4 objets comme suit dans un tableau :
Est-il possible que je peux obtenir le troisième objet par la valeur de la propriété
par exemple sans une `` boucle ?
Disons que j’ai un 4 objets comme suit dans un tableau :
Est-il possible que je peux obtenir le troisième objet par la valeur de la propriété
par exemple sans une `` boucle ?
Je ne sais pas pourquoi vous êtes contre une boucle for (sans doute que vous vouliez dire d'une boucle for, ce n'est précisément..), ils sont rapides et faciles à lire. De toute façon, voici quelques options.
Pour la boucle:
function getByValue(arr, value) {
for (var i=0, iLen=arr.length; i<iLen; i++) {
if (arr[i].b == value) return arr[i];
}
}
.filtre
function getByValue2(arr, value) {
var result = arr.filter(function(o){return o.b == value;} );
return result? result[0] : null; // or undefined
}
.forEach
function getByValue3(arr, value) {
var result = [];
arr.forEach(function(o){if (o.b == value) result.push(o);} );
return result? result[0] : null; // or undefined
}
Si, d'autre part, vous vraiment ne signifie pas pour..et que vous voulez trouver un objet avec n'importe quelle propriété avec une valeur de 6, alors vous devez utiliser pour..à moins que vous ne passiez les noms à vérifier. par exemple
function getByValue4(arr, value) {
var o;
for (var i=0, iLen=arr.length; i<iLen; i++) {
o = arr[i];
for (var p in o) {
if (o.hasOwnProperty(p) && o[p] == value) {
return o;
}
}
}
}
Il ressemble à la ECMAScript 6 proposition il y a le Tableau des méthodes find() et findIndex(). La mozilla page propose également des polyfills que vous pouvez inclure pour obtenir la fonctionnalité de ces sur tous les navigateurs.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
function isPrime(element, index, array) {
var start = 2;
while (start <= Math.sqrt(element)) {
if (element % start++ < 1) return false;
}
return (element > 1);
}
console.log( [4, 6, 8, 12].find(isPrime) ); // undefined, not found
console.log( [4, 5, 8, 12].find(isPrime) ); // 5
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
function isPrime(element, index, array) {
var start = 2;
while (start <= Math.sqrt(element)) {
if (element % start++ < 1) return false;
}
return (element > 1);
}
console.log( [4, 6, 8, 12].findIndex(isPrime) ); // -1, not found
console.log( [4, 6, 7, 12].findIndex(isPrime) ); // 2
Vous pouvez utiliser la méthode Array.filter : https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.