Два массива объекта объединяются в другой массив объекта - PullRequest
0 голосов
/ 22 апреля 2020
arr1 = [{name : xyz}, {age: 26}, {sex : m}] 

arr2 = [{place: somwhere}, {std: 6}]

результат должен быть

  arr3 =[
         {name : xyz, place: somwhere, std: 6}, 
         {age: 26 , place: null , std: null}, 
         {sex : m, place: null , std: null}
        ]

Ответы [ 4 ]

0 голосов
/ 22 апреля 2020

Я положу логи c в java, преобразовав их в javascript

 Object[] arr1= {"benz",26,'m'};

 Object[] arr2= {"somewhere",6};

Object[][] arr3= new Object[arr1.length][arr1.length];

for(int r=0;r<arr3.length;r++)
{
    for(int c=0;c<1;c++)
    {
        if(r!=0)
            System.out.println("name : "+arr1[r]+", place : "+null+", std : "+null);
        else
            System.out.println("name : "+arr1[r]+", place : "+arr2[c]+", std : "+arr2[c+1]);

    }
}

}

0 голосов
/ 22 апреля 2020

Попробуйте, верните новый объект Array:

Object.assign({}, arr1, arr2,arr3)
0 голосов
/ 22 апреля 2020

Вы можете объединить два массива следующим образом:

const res = [...arr1, ...arr2]

, но в результате вы получите массив, подобный этому

[ {name: "xyz"}, {age: 26}, {sex: "m"}, {place: "somwhere"}, {std: 6} ]

Это не то, что вам нужно.

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

const res2 = arr1.map( (key, index) => [arr1[index], ...arr2])

console.log(res2) 

Но это даст вам такой результат:

[ 
  [ {name: "xyz"}, {place: "somwhere"}, {std: 6}],
  [ {age: 26}, {place: "somwhere"}, {std: 6}],
  [ {sex: "m"}, {place: "somwhere"}, {std: 6}]
]

Что тоже не совсем то, что вы хотели.

Если вы хотите достичь именно того результата, который вы хотите, я думаю, вам нужно было бы иметь логарифм c между двумя массивами, для Например, значения, которые вы хотите объединить в разные индексы второго массива:

const arr1 = [{name : 'xyz'}, {age: 26}, {sex : 'm'}]

const arr2 = [ [{place: 'somwhere'}, {std: 6}], [{place: null}, {std: null}], [{place:null}, {std: null}]]

const res = arr1.map( (key, index) => [arr1[index], ...arr2[index]])

console.debug('res:',res)

Это даст вам точный результат, который вы хотите, но имеет другую настройку. Если вы скажете больше о логике c, возможно, будет лучший ответ.

0 голосов
/ 22 апреля 2020

Попробуйте это.

У вас есть только два типа данных: строки и число, вы не можете объединить неопределенные типы данных объектов.

var arr1 = [{ name: "xyz" }, { age: 26 }, { sex: "m" }]

var arr2 = [{ place: "somwhere" }, { std: 6 }]

var arr3 = [];

arr3.push(arr1, arr2)

console.log(arr3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...