Извлечение всех значений из массива объектов на основе значения ключей - PullRequest
0 голосов
/ 17 декабря 2018

Если у меня есть массив, который выглядит следующим образом:

[{"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"}]

Как мне отсортировать это по kitchenType?

Я пытался использовать:

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

Однако я не могу понять, как:

  1. Поместить его в одну строку с командой, разделяющей результаты (они просто выводятся на консоль по отдельности).

  2. используйте строку, которую я только что сделал, как console.log(go) или console.log(result) печатает 'undefined'.

Спасибо за вашу помощь заранее!Я пробовал другие предложения по SO и не только, но не добился большого успеха!

Ответы [ 4 ]

0 голосов
/ 17 декабря 2018

Если вы новичок в Javascript, но ранее уже использовали любые другие языки программирования, это может быть более простым, но не эффективным способом решения вашей текущей головоломки.Я написал каждый шаг js с соответствующими комментариями для удобочитаемости и понимания каждого шага.

/****** 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(', '));

Вывод в ваш console.log будет

Indian, Italian, Asian, Japanese, African

Надеюсь, что вымы ищем.Хорошего дня.

0 голосов
/ 17 декабря 2018

Использование карты

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));
0 голосов
/ 17 декабря 2018

Просто .map() в новый массив в отношении кухонь.Затем делайте что хотите с этими данными:

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);
0 голосов
/ 17 декабря 2018

Самое простое, что можно сделать, это использовать map() для построения массива кухонь.Затем вы можете выполнить цикл или построить из него строку, как требуется.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...