Как преобразовать массивы объектов из объектов в одномерный массив? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть пример массива javascript объекта внутри объекта есть объект.Так что я в основном хочу только это в одномерном массиве.

Я искал много Q на SO, но ни один из них в соответствии с моим требованием.

То, что у меня есть

[
{
"id": "59cf758f7bdf8d2e0c1c68c7",
"value": {
  "city": "Mahbubnagar",
  "state": "Andhra Pradesh",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68c8",
"value": {
  "city": "Udgir",
  "state": "Maharashtra",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68c9",
"value": {
  "city": "Umarga",
  "state": "Maharashtra",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68ca",
"value": {
  "city": "Umarkhed",
  "state": "Maharashtra",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68cb",
"value": {
  "city": "Umred",
  "state": "Maharashtra",
  "country": "India"
}
}
]

И я просто хочу этот массив объектов в массив

[
  "59cf758f7bdf8d2e0c1c68c7",
  "Mahbubnagar",
  "Andhra Pradesh",
  "India",
],[
  "59cf758f7bdf8d2e0c1c68c9",
  "Umarga",
  "Maharashtra",
  "India",
],[
  "59cf758f7bdf8d2e0c1c68ca",
  "Umarkhed",
  "Maharashtra",
  "India",
],[
  "59cf758f7bdf8d2e0c1c68c7",
  "Mahbubnagar",
  "Andhra Pradesh",
  "India",
],

Массив объектов может иметь больше потомков, другими словами, вы можете сказать его динамическое содержимое.

Что у меня естьдо сих пор используется

var object= property.value.elements;
        var finalArray = object.map(function (obj) {
          return obj.id;
        });
        console.log(finalArray);

, который дает мне только список идентификаторов

Это не повторяющийся вопрос, пожалуйста, проверьте, прежде чем пометить его как дубликат.

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Вы можете проверить, является ли значение объекта объектом, и взять сглаженное значение для результата.

function flat(object) {
    return Object
        .values(object)
        .reduce((r, v) => r.concat(v && typeof v === 'object' ? flat(v) : v), []);
}

var array = [{ id: "59cf758f7bdf8d2e0c1c68c7", value: { city: "Mahbubnagar", state: "Andhra Pradesh", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68c8", value: { city: "Udgir", state: "Maharashtra", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68c9", value: { city: "Umarga", state: "Maharashtra", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68ca", value: { city: "Umarkhed", state: "Maharashtra", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68cb", value: { city: "Umred", state: "Maharashtra", country: "India" } }],
    result = array.map(flat);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 18 мая 2018

Это не самый простой способ сделать это.Просто зациклите все объекты и извлеките их значения.

let x = [{"id": "59cf758f7bdf8d2e0c1c68c7", "value": {...}, ..] 
let res = []

x.forEach((obj, index) => {
  res.push([obj.id, obj.value.city, obj.value.state, obj.value.country])
}) 

console.log(res)
0 голосов
/ 18 мая 2018

Попробуйте следовать

var arr = [{"id":"59cf758f7bdf8d2e0c1c68c7","value":{"city":"Mahbubnagar","state":"Andhra Pradesh","country":"India"}},{"id":"59cf758f7bdf8d2e0c1c68c8","value":{"city":"Udgir","state":"Maharashtra","country":"India"}},{"id":"59cf758f7bdf8d2e0c1c68c9","value":{"city":"Umarga","state":"Maharashtra","country":"India"}},{"id":"59cf758f7bdf8d2e0c1c68ca","value":{"city":"Umarkhed","state":"Maharashtra","country":"India"}},{"id":"59cf758f7bdf8d2e0c1c68cb","value":{"city":"Umred","state":"Maharashtra","country":"India"}}];

function getVals(obj, arr) {
  Object.entries(obj).forEach(([key, value]) => {
    if(typeof value === "object") {
      arr = [...arr, ...getVals(obj[key], arr)];
    } else {
      arr.push(value);
    }
  });
  return arr;
}

var resp = arr.map((item) => {
  let temp = [];
  getVals(item, temp);
  return temp;
});
console.log(resp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...