Je veux retourner l'objet contenant les chaînes les plus proches à l'intérieur d'un tableau à l'intérieur d'un objet, à l'intérieur d'un autre tableau,
my indexOf () ne renvoie que la chaîne exacte comme true.
J'ai essayé de remplacer indexOf () par march () , matches () , includes () rien ne fonctionne.
Veuillez nous conseiller
[
{ supplyList: ["apple", "orange", "red apple"] },
{ supplyList: ["apple juice", "drink", "green apple", "dream app"] }
];
la sortie que je souhaite est tous les objets contenant les chaînes les plus proches par exemple:
let SellerList = [
{ supplyList: ["apple", "orange", "red apple"] },
{ supplyList: ["apple juice", "drink", "green apple", "dream app"] },
{ supplyList: ["lamp", "dog", "cat", "man"] }
];
let stringToMatch = "app";
let filteredList = SellerList.filter(
(txt) => txt.supplyList.indexOf(stringToMatch) !== -1
);
3 Réponses :
Vous avez un tableau à l'intérieur d'un objet, à l'intérieur d'un autre tableau, vous voulez donc cibler ce tableau interne et appeler le filtre dessus:
let SellerList = [{
supplyList: ['apple', 'orange', 'red apple']
}];
let stringToMatch = 'app';
let filteredList = SellerList[0].supplyList.filter(txt => txt.indexOf(stringToMatch) !== -1);
console.log(filteredList)
merci, mais comment puis-je le faire quand j'ai plus d'un objet? dans le tableau avec un autre tableau de chaînes à l'intérieur?
Vous devriez essayer de faire correspondre les chaînes internes des supplyLists au lieu des tableaux eux-mêmes.
let SellerList = [
{ supplyList: ['apple','orange','red apple'] },
{ supplyList: ['apple juice','drink','green apple'] }
];
let stringToMatch = 'app';
let filteredList = SellerList.map(list => {
return list.supplyList.filter(item => {
return item.indexOf(stringToMatch) >= 0
})
});
console.log(filteredList);
merci, comment puis-je reruen l'objet contenant les chaînes les plus proches? par exemple: {supplyList: ['apple juice', 'drink', 'green apple']} j'ai également édité ma question avec le résultat attendu
Veuillez essayer la solution suivante
let SellerList = [
{ supplyList: ["apple", "orange", "red apple"] },
{ supplyList: ["apple juice", "drink", "green apple", "dream app"] },
{ supplyList: ["lamp", "dog", "cat", "man"] },
];
let stringToMatch = "app";
let filteredList = SellerList.reduce((previousValue, currentValue) => {
if (currentValue.supplyList.join().includes(stringToMatch)) {
previousValue = [...previousValue, { supplyList: currentValue.supplyList }];
}
return previousValue;
}, []);
console.log(filteredList);
Voir
à partir du terme de recherche
appqui montre quel serait le résultat attendu et pourquoi? et y a-t-il plus d'un objet dans le tableauSellerList?@Mario oui j'en ai plus d'un
Pour
stringToMatch = "app"quelle est la sortie attendue?@Mario tous les objets contenant les chaînes les plus proches par exemple: voir ma question je l'édite avec l'exemple de sortie attendu