Mon tableau ressemble à ceci:
array = [object {id: 1, value: "itemname"}, object {id: 2, value: "itemname"}, ...]
tous mes objets ont les mêmes attributs, mais avec des valeurs différentes.
Existe-t-il un moyen simple d'utiliser une instruction WHERE pour ce tableau?
Prenez l'objet où object.id = var
ou dois-je simplement parcourir l'ensemble du tableau et vérifier chaque élément? Mon tableau a plus de 100 entrées, donc je voulais savoir s'il y avait un moyen plus efficace
Utilisation Array.find
:
let array = [
{ id: 1, value: "itemname" },
{ id: 2, value: "itemname" }
];
let item1 = array.find(i => i.id === 1);
Array.find at MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Je voudrais utiliser filtre ou réduire :
let array = [
{ id: 1, value: "itemname" },
{ id: 2, value: "itemname" }
];
let item1 = array.filter(item => item.id === 1)[0];
let item2 = array.reduce((prev, current) => prev || current.id === 1 ? current : null);
console.log(item1); // Object {id: 1, value: "itemname"}
console.log(item2); // Object {id: 1, value: "itemname"}
( code dans la cour de récréation )
Si vous souhaitez parcourir l'ensemble du tableau, utilisez n pe :
let item;
array.some(i => {
if (i.id === 1) {
item = i;
return true;
}
return false;
});
Vous pouvez rechercher dynamiquement une certaine valeur dans un tableau d'objets à l'aide de TypeScript si vous devez rechercher la valeur dans tous les champs de l'objet sans spécifier de colonne.
var searchText = 'first';
let items = [
{ id: 1, name: "first", grade: "A" },
{ id: 2, name: "second", grade: "B" }
];
This below code will search for the value
var result = items.filter(item =>
Object.keys(item).some(k => item[k] != null &&
item[k].toString().toLowerCase()
.includes(searchText.toLowerCase()))
);
La même approche peut être utilisée pour créer un filtre de recherche dans angularjs 4 à l'aide de TypeScript
Vous devrez faire une boucle sur le tableau, mais si vous créez une hashmap pour lier chaque identifiant à un index et le sauvegarder, vous ne devez le faire qu'une seule fois, afin que vous puissiez référencer directement tout objet après cela:
var idReference = myArray.reduce(function( map, record, index ) {
map[ record.id ] = index;
return map;
}, {});
var objectWithId5 = myArray[ idReference["5"] ];
Cela suppose cependant que tous les identifiants sont uniques.