J'ai le tableau suivant dans mon stockage local
[
{
"customerId":"30",
"CustomerContactId":63873
},
{
"customerId":"26506",
"CustomerContactId":63874
},
{
"customerId":"26596",
"CustomerContactId":63875
},
{
"customerId":"26597",
"CustomerContactId":63876
}
]
Nous avons la fonctionnalité de sélectionner le client dans la liste déroulante. Sur certains clients, je passe customerId à la fonction. En fonction, j'appelle api pour générer CustomerContactId pour ce customerId. je veux parcourir ce tableau et et si je veux vérifier si customerId existe dans le tableau, n'exécutez pas la génération de l'API CustomerContactId mais si customerId n'existe pas dans tout le tableau, puis créez CustomerContactId pour ce customerId. J'ai essayé la fonction de carte javascript. Ici this.state.customerContactMap = tableau de stockage local. cust_id = client sélectionné.
this.state.customerContactMap.map(item => {
if(item.customerId === cust_id) {
//Do not generate new CustomerContactId
} else {
//Generate CustomerContactId API Call
//it should only generate CustomerContactId if cust_id is not
//exist in array
}
})
Mais je suis confronté au problème qu'il crée des clients ContactEd chaque fois qu'il passe à une autre condition. J'ai besoin d'aide en logique conditionnelle.
4 réponses
Vous pouvez utiliser Array.filter pour vérifier si l'ID client existe ou non.
var data = [{
"customerId": "30",
"CustomerContactId": 63873
}, {
"customerId": "26506",
"CustomerContactId": 63874
}, {
"customerId": "26596",
"CustomerContactId": 63875
}, {
"customerId": "26597",
"CustomerContactId": 63876
}]
function getCustomer(id){
return data.filter(function(e){
if(e.customerId == id){
return true;
}
});
}
var custId = getCustomer("26597");
if(custId.length == 0){
console.log("Not exists");
//network call
}else{
console.log("Exists");
console.log(custId);
//normal operations of cust id available
}
Vous devez utiliser .some()
au lieu de .map()
.
Selon Docs:
La méthode some () teste si au moins un élément du tableau passe le test implémenté par la fonction fournie.
Par exemple:
if(arr.some(({ customerId }) => customerId === selectedId))
console.log("Selected Found");
else
console.log("Selected Not Found");
Démo:
let arr = [{ "customerId": "30", "CustomerContactId": 63873}, {"customerId": "26506","CustomerContactId": 63874}, {"customerId": "26596","CustomerContactId": 63875}, {"customerId": "26597","CustomerContactId": 63876}];
let selectedId = "26596";
if(arr.some(({ customerId }) => customerId === selectedId))
console.log("Selected Found");
else
console.log("Selected Not Found");
Vous pouvez utiliser array#some
pour vérifier si customerId
est présent dans votre tableau.
const customerContactMap = [{ "customerId": "30", "CustomerContactId": 63873 }, { "customerId": "26506", "CustomerContactId": 63874 }, { "customerId": "26596", "CustomerContactId": 63875 }, { "customerId": "26597", "CustomerContactId": 63876 }],
custId = 30;
if(customerContactMap.some(({customerId}) => customerId == custId)){
console.log('found');
} else {
//Execute API
}
N'ayant que cette condition:
if(item.customerId === cust_id) {
Il semble que le type de item.customerId
et cust_id
ne soit pas du même type.
Essayez la conversion:
if(item.customerId == cust_id) {
OU
if(item.customerId === cust_id.toString()) {
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.