Как сгладить такие массивы? - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь сгладить массив, но столкнулся с некоторой проблемой. У меня есть эти данные для сглаживания.

   arr =  [
    {
        "data": [
            [
                {
                    "_id": "5ee97ee7f25d1c1482717bdf",
                    "email": "test1@test.io",
                    "profileImages": [],
                    "username": "test1",
                    "birthday": "2020-06-11T10:11:32.000Z",
                    "phoneNumber": "+910000000000",
                    "location": "Test Location",
                    "firstName": "test1",
                    "lastName": "test1",

                }
            ],
            [
                {
                    "_id": "5ee97ef2f25d1c1482717be1",
                    "email": "test2@test.io",
                    "profileImages": [],
                    "username": "test2",
                    "birthday": "2020-06-11T10:11:32.000Z",
                    "phoneNumber": "+910000000000",
                    "location": "Test Location"
                }
            ]
        ]
    }
],

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

data: [
           {
                "_id": "5ee97ee7f25d1c1482717bdf",
                "email": "test1@test.io",
                "profileImages": [],
                "username": "test1",
                "birthday": "2020-06-11T10:11:32.000Z",
                "phoneNumber": "+910000000000",
                "location": "Test Location",
                "firstName": "test1",
                "lastName": "test1"},
            {
                "_id": "5ee97ef2f25d1c1482717be1",
                "email": "test2@test.io",
                "profileImages": [],
                "username": "test2",
                "birthday": "2020-06-11T10:11:32.000Z",
                "phoneNumber": "+910000000000",
                "location": "Test Location"
            }
        ]

Я пытался использовать библиотеку loda sh, чтобы сгладить его, но это не сработало. Любые предложения по этому поводу, как я могу сгладить эти массивы в один массив?

Ответы [ 3 ]

2 голосов
/ 17 июня 2020

Вы можете сделать это, используя комбинацию flatMap и flat(), flat сгладит внутренний массив и flatMap для внешнего массива.

var  arr = [ { "data": [ [ { "_id": "5ee97ee7f25d1c1482717bdf", "email": "test1@test.io", "profileImages": [], "username": "test1", "birthday": "2020-06-11T10:11:32.000Z", "phoneNumber": "+910000000000", "location": "Test Location", "firstName": "test1", "lastName": "test1", } ], [ { "_id": "5ee97ef2f25d1c1482717be1", "email": "test2@test.io", "profileImages": [], "username": "test2", "birthday": "2020-06-11T10:11:32.000Z", "phoneNumber": "+910000000000", "location": "Test Location" } ] ] }];

var result = arr.flatMap(obj=>obj.data.flat());

console.log(result);

Надеюсь, это поможет.

1 голос
/ 17 июня 2020

flatMap и flat() широко не поддерживаются всеми браузерами. См. Это: Поиск в многомерном массиве (алгоритм)

Так что простая рекурсия - самый безопасный вариант.

var data = [
            [
                {
                    "_id": "5ee97ee7f25d1c1482717bdf",
                    "email": "test1@test.io",
                    "profileImages": [],
                    "username": "test1",
                    "birthday": "2020-06-11T10:11:32.000Z",
                    "phoneNumber": "+910000000000",
                    "location": "Test Location",
                    "firstName": "test1",
                    "lastName": "test1",

                }
            ],
            [
                {
                    "_id": "5ee97ef2f25d1c1482717be1",
                    "email": "test2@test.io",
                    "profileImages": [],
                    "username": "test2",
                    "birthday": "2020-06-11T10:11:32.000Z",
                    "phoneNumber": "+910000000000",
                    "location": "Test Location"
                }
            ]
        ]


  var result = [];
function flatten(data){
  data.forEach(k=>{
   if(Array.isArray(k)){
     flatten(k)
   }else{
    result.push(k)
   }
  });
  return result;
}
console.log(flatten(data))
0 голосов
/ 17 июня 2020

можно использовать flat

var  arr = [ { "data": [ [ { "_id": "5ee97ee7f25d1c1482717bdf", "email": "test1@test.io", "profileImages": [], "username": "test1", "birthday": "2020-06-11T10:11:32.000Z", "phoneNumber": "+910000000000", "location": "Test Location", "firstName": "test1", "lastName": "test1", } ], [ { "_id": "5ee97ef2f25d1c1482717be1", "email": "test2@test.io", "profileImages": [], "username": "test2", "birthday": "2020-06-11T10:11:32.000Z", "phoneNumber": "+910000000000", "location": "Test Location" } ] ] }];

    console.log([...arr[0].data.flat()])
...