У меня возникла проблема с тем, чтобы сгладить мой эластичный ответ на запрос (только мне нужны _источники) в массиве одного уровня.
Пожалуйста, найдите эластичный ответ ниже:
Использование (response.hits.Хиты) Я могу получить массив данных, но не могу сгладить массив объектов в один уровень
Текущий массив:
var current_array = [
{
"_id": "gSdhs8aPjcUjiIs6ey85",
"_score": 1,
"_source": {
"business_type": "Primary Only",
"ceo_name": "Tim Cook",
"city": "San Ramon",
"company_id": "gSdhs8aPjcUjiIs6ey85",
"company_name": "Apple Inc."
}
},
{
"_id": "v2bdB5F3PbLzziayKikS",
"_score": 1,
"_source": {
"bankruptcy_activity": "No",
"business_type": "Primary Only",
"ceo_name": "Andrew N. Liveris",
"city": "New York",
"company_id": "v2bdB5F3PbLzziayKikS",
"company_name": "General Electric",
"country": "United States"
}
}
];
Желаемый результат:
var desired_array = [{
"_id": "gSdhs8aPjcUjiIs6ey85",
"_score": 1,
"_source_business_type": "Primary Only",
"_source_ceo_name": "Tim Cook",
"_source_city": "San Ramon",
"_source_company_id": "gSdhs8aPjcUjiIs6ey85",
"_source_company_name": "Apple Inc."
},
{
"_id": "v2bdB5F3PbLzziayKikS",
"_score": 1,
"_source_business_type": "Primary Only",
"_source_ceo_name": "Andrew N. Liveris",
"_source_city": "New York",
"_source_company_id": "v2bdB5F3PbLzziayKikS",
"_source_company_name": "General Electric",
"_source_country": "United States"
}
];
Я попробовал приведенный ниже код, но он конвертируется в один массив, который мне не нужен:
var flattenObject = function (ob) {
var toReturn = [];
var flatObject;
for (var i in ob) {
if (!ob.hasOwnProperty(i)) {
continue;
}
if ((typeof ob[i]) === 'object') {
flatObject = flattenObject(ob[i]);
for (var x in flatObject) {
if (!flatObject.hasOwnProperty(x)) {
continue;
}
toReturn[i + (!!isNaN(x) ? '.' + x : '')] = flatObject[x];
}
} else {
toReturn[i] = ob[i];
}
}
return toReturn;
};
Это дает вывод, как показано ниже:
var undesired_array = [
0. _index: "company",
0. _score: 1,
0. _source.ceo_name: "Tim Cook",
0. _source.city: "San Ramon",
0. _source.company_name: "Apple Inc.",
1. _id: "v2bdB5F3PbLzziayKikS",
1. _index: "company",
1. _score: 1,
1. _source.ceo_name: "Andrew N. Liveris",
1. _source.city: "New York",
1. _source.company_id: "v2bdB5F3PbLzziayKikS",
1. _source.company_name: "General Electric"
];