5 votes

Extraction de toutes les valeurs d'un tableau d'objets en fonction de la valeur des clés.

Si j'ai un tableau qui ressemble à celui ci-dessous :

[{"matchedKey":"cuisineType","cuisineType":"Indian","group":"group"},
 {"matchedKey":"cuisineType","cuisineType":"Italian","group":"group"},
 {"matchedKey":"cuisineType","cuisineType":"Asian","group":"group"},
 {"matchedKey":"cuisineType","cuisineType":"Japanese","group":"group"},
 {"matchedKey":"cuisineType","cuisineType":"African","group":"group"}]

Comment puis-je les trier par type de cuisine ?

J'ai essayé de l'utiliser :

var result = array.find(obj => {
var go =  obj.cuisineType
console.log(String(obj.cuisineType))
})

Cependant, je n'arrive pas à trouver comment faire :

  1. Mettez-le dans une seule chaîne de caractères avec command séparant les résultats (ils s'impriment simplement dans la console individuellement).

  2. utiliser la chaîne que je viens de créer comme console.log(go) o console.log(result) imprime 'undefined'.

Merci d'avance pour votre aide ! J'ai essayé d'autres suggestions sur SO et au-delà mais je n'ai pas eu beaucoup de succès !

3voto

Rory McCrossan Points 69838

La chose la plus simple à faire serait d'utiliser map() pour construire un éventail des cuisines. Vous pouvez ensuite le parcourir en boucle ou construire une chaîne de caractères à partir de celui-ci, selon vos besoins.

var arr = [{"matchedKey":"cuisineType","cuisineType":"Indian","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"Italian","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"Asian","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"Japanese","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"African","group":"group"}]

var cuisines = arr.map(function(el) {
  return el.cuisineType;
});

console.log(cuisines); // array
console.log(cuisines.join(', ')); // formatted string

1voto

Kunal Mukherjee Points 1170

Utilisation de la carte fonction

const cuisineTypes = [{
    "matchedKey": "cuisineType",
    "cuisineType": "Indian",
    "group": "group"
  },
  {
    "matchedKey": "cuisineType",
    "cuisineType": "Italian",
    "group": "group"
  },
  {
    "matchedKey": "cuisineType",
    "cuisineType": "Asian",
    "group": "group"
  },
  {
    "matchedKey": "cuisineType",
    "cuisineType": "Japanese",
    "group": "group"
  },
  {
    "matchedKey": "cuisineType",
    "cuisineType": "African",
    "group": "group"
  }
];

const result = cuisineTypes.map(x => x.cuisineType);

console.log(JSON.stringify(result, null, 4));

1voto

Jack Bashford Points 34617

Juste .map() dans un nouvel éventail en matière de cuisines. Ensuite, faites ce que vous voulez avec ces données :

var arr = [{"matchedKey":"cuisineType","cuisineType":"Indian","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"Italian","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"Asian","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"Japanese","group":"group"},
  {"matchedKey":"cuisineType","cuisineType":"African","group":"group"}];

var sortedArr = arr.map(e => e.cuisineType);
console.log(sortedArr);

1voto

xjanus Points 11

Si vous êtes novice en Javascript mais que vous avez déjà utilisé d'autres langages de programmation, ceci pourrait être un moyen plus facile - mais pas efficace - de résoudre votre énigme actuelle. J'ai écrit chaque étape du js avec des commentaires appropriés pour la lisibilité et la compréhension de chaque étape.

/****** COMMENT *******
Declaring the original array as arr
*********************/

var arr = [
        {
         matchedKey:"cuisineType",
         cuisineType:"Indian",
         group:"group"
        },

        {
            matchedKey:"cuisineType",
            cuisineType:"Italian",
            group:"group"
        },

        {
            matchedKey:"cuisineType",
            cuisineType:"Asian",
            group:"group"
        },

        {
            matchedKey:"cuisineType",
            cuisineType:"Japanese",
            group:"group"
        },

        {
            matchedKey:"cuisineType",
            cuisineType:"African",
            group:"group"
        }
     ];

/****** COMMENT *******
Declaring a new empty array
*******************/

var newArray = [];

/****** COMMENT *******
array.push() method adds one or more elements to the end of an array.
So, I'm appending values of key - cuisineType - in the empty array named newArray (see above).
*******************/

for (var i = 0; i < arr.length; i++){

/****** COMMENT *******
Through this for loop, 'i' will point as index value to each individual object within an array starting from 0 up to the (length of an array - 1) ==> in your case, 5 - 1 = 4.
*******************/

newArray.push(arr[i].cuisineType);

}

/****** COMMENT *******
join() method creates and returns a new string by concatenating all of the elements in an array
*******************/

console.log(newArray.join(', '));

La sortie dans votre console.log sera

Indian, Italian, Asian, Japanese, African

J'espère que c'est ce que vous cherchiez. Passez une bonne journée.

0voto

Banzy Points 1

Avec un peu d'ES6 :

  function extractArrayFromKey(ArrayOfObjects,WantedKey){
     return ArrayOfObjects(obj => {
       let val = null;
       Object.entries(obj).forEach(([key,value]) => {if (key==WantedKey) val=value});
       return val
    })
  }

 const newArray = extractArrayFromKey(arr,'cuisineType') 

 -> ["Indian", "Italian", "Asian", "Japanese", "African"]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X