En utilisant Lodash, j'essaie de trouver s'il existe une valeur dans la collection ou non.

S'il existe, je veux retourner true sinon false.

 const d = [{
     "country": "India",
     "_id": ObjectId("5ad47b639048dd2367e95d48"),
     "cities": []
 }, {
     "country": "Spain",
     "_id": ObjectId("5ad47b639048dd2367e95d49"),
     "cities": []
 }];

Code d'extrait

Countries = ['India', 'Spain']
if (_.has(d, Countries)) {
    console.log(true);
} else {
    console.log(false);
}

Mais il renvoie toujours False. Il n'est pas recommandé pour moi d'utiliser lodash quelqu'un peut-il suggérer une meilleure façon si possible.

0
Nikhil Savaliya 16 avril 2018 à 14:56

3 réponses

Meilleure réponse

ES6

Vous pouvez utiliser array.some() et array.includes() pour vérifier les entrées en double dans le tableau.

DEMO

const d = [{
  "country": "India",
  "_id": "5ad47b639048dd2367e95d48",
  "cities": []
}, {
  "country": "Spain",
  "_id": "5ad47b639048dd2367e95d49",
  "cities": []
}];

const Countries = ['India', 'Spain'];

console.log(d.some(({country}) => Countries.includes(country)))
.as-console-wrapper { max-height: 100% !important; top: 0; }
1
Narendra Jadhav 17 avril 2018 à 07:10

Vous pouvez utiliser la combinaison des méthodes some et includes. Il renverra true, si un élément de items contient un pays du tableau countries.

const items =  [
    {
        "country": "India",
        "_id": 'ObjectId("5ad47b639048dd2367e95d48")',
        "cities": []
    },
    {
        "country": "Spain",
        "_id": 'ObjectId("5ad47b639048dd2367e95d49")',
        "cities": []
    }
];

const countries = ['India', 'Spain'];
const includes = _.some(items, item => _.includes(countries , item.country));
console.log(includes);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.5/lodash.min.js"></script>
4
alexmac 16 avril 2018 à 12:02

Vous pouvez également le faire sans Lodash à l'aide de Javascripts intégrés dans la fonction filter

d.filter(item => item.country === "Spain"); //Would return an array of objects where the country's name property is Spain!

Si nous voulions en faire un booléen, nous pourrions le déclarer en tant que variable et affirmer que sa longueur est supérieure à 0 comme ceci:

let isSpanishCountry = d.filter(item => item.country === "Spain").length > 0; // console.log(isSpanishCountry) => true
0
Christian Bartram 16 avril 2018 à 12:12