J'ai une liste qui, après avoir sélectionné des valeurs, renvoie un tableau. Maintenant, supposons que je sélectionne les 1ère et 3ème valeurs en sautant la 2ème, alors le tableau retourné est comme:
[
{
"cname": "10TKN",
"code": "403",
"id": 1
},
{
"cname": "20TKN",
"code": "403",
"id": 3
}
]
Je veux le résultat attendu comme:
[
{
"cname": "10TKN",
"code": "403",
"id": 1
},
{
"cname": undefined,
"code": undefined,
"id": 2
},
{
"cname": "20TKN",
"code": "403",
"id": 3
}
]
4 Réponses :
Vous pouvez utiliser Array.filter () de JavaScript pour filtrer les valeurs non définies .
const res = data.filter(({cname, code, id }) => cname !== undefined && code !== undefined && id !== undefined);
Cela garantira que seuls les objets avec des valeurs de vérité sont renvoyés.
Alternativement, comme mentionné par HMR sur les commentaires, si vous voulez seulement vérifier undefined code >, il vaudra mieux faire ceci:
const data = [
{
"cname": "10TKN",
"code": "403",
"id": 1
},
{
"cname": undefined,
"code": undefined,
"id": 2
},
{
"cname": "20TKN",
"code": "403",
"id": 3
}
];
const res = data.filter(({cname, code, id }) => cname && code && id);
console.log(res);
Pourrait avoir une casse de bord imprévisible lors de l'utilisation de falsy, si OP veut supprimer lorsque prop n'est pas défini, alors mieux vaut vérifier cela: cname! == undefined && code! == undefined
@HMR ouais d'accord. Cela dépend vraiment des exigences du PO. Il peut souhaiter conserver les null ou 0 . Si tel est le cas, il vaudra mieux faire une vérification undefined comme ce que vous avez suggéré!
En supposant que la clé que nous voulons évaluer est cname .
Nous devons filtrer le tableau en utilisant la fonction Array.filter -:
let arr = [
{
"cname": "10TKN",
"code": "403",
"id": 1
},
{
"cname": undefined,
"code": undefined,
"id": 2
},
{
"cname": "20TKN",
"code": "403",
"id": 3
}
];
arr = arr.filter(({cname}) => cname);
console.log(arr)
Vous pouvez utiliser filter comme suggéré déjà, mais vous devrez vérifier les identifiants sélectionnés dans la liste, puis supprimer ceux qui ne sont pas sélectionnés. En bref, vous ne retournerez true que si l'ID de l'objet de la liste correspond à celui que vous avez sélectionné
const dataList = [
{
"cname": "10TKN",
"code": "403",
"id": 1
},
{
"cname": undefined,
"code": undefined,
"id": 2
},
{
"cname": "20TKN",
"code": "403",
"id": 3
}
];
const selectedDataIds = [1, 3];
const res = dataList.filter(({ id }) => selectedDataIds.includes(id));
console.log(res);
Vous pouvez utiliser Affectation de destruction et ignorer certaines valeurs avec une virgule,
comme ceci:
const arr = [
{
"cname": "10TKN",
"code": "403",
"id": 1
},
{
"cname": undefined,
"code": undefined,
"id": 2
},
{
"cname": "20TKN",
"code": "403",
"id": 3
}
]
const [first, ,third] = arr;
console.log(first, third);
Affectation de destruction - Ignorer certaines valeurs renvoyées
@jianshu est-ce que ça aide?
pouvez-vous être plus précis? , vous voulez obtenir ceux avec des propriétés
cnameetcodequi ne sont pasindéfinies?