Если у меня есть массив, который выглядит следующим образом:
[{"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 result = array.find(obj => {
var go = obj.cuisineType
console.info(String(obj.cuisineType))
})
Однако я не могу понять, как:
Поместите его в одну строку с командой, разделяющей результаты (они просто выводятся на консоль по отдельности).
используйте строку, которую я только что сделал, поскольку console.info(go)
или console.info(result)
печатает undefined.
Заранее спасибо за помощь! Я пробовал другие предложения по SO и не только, но без особого успеха!
Проще всего было бы использовать 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.info(cuisines); // array
console.info(cuisines.join(', ')); // formatted string
@Treycos, это правда, но будьте осторожны со стрелочными функциями, так как они вообще не работают ни в одной версии IE.
Использование функции карта
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.info(JSON.stringify(result, null, 4));
Просто .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.info(sortedArr);
Если вы новичок в 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.info(newArray.join(', '));
Вывод в вашем console.info будет
Indian, Italian, Asian, Japanese, African
Надеюсь, это то, что вы искали. Хорошего дня.
С немного 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"]
Еще короче, поместите:
el => el.cuisineType
в вашу функцию карты