У меня есть список массивов со мной. Вот
array1= [ab,bc];
array2= [12,23];
array3= [vw,wx];
Теперь мне нужно сделать объект массива, подобный указанному ниже из приведенного выше списка
[ab,12, vw] as 1st array
[bc,23,wx] as 2nd array
И эти два массива теперь должны быть в одном объекте. как я могу это достичь?
Проверь это. Это более динамичная реализация без жесткого кодирования допущений.
function prepareObjectOfArrays(myArrays){
var myObj = [];
var maxArrLength = calculateMaxLength(myArrays);
for(var i=0; i<maxArrLength; i++){
var tempArr = [];
for(var j=0; j<myArrays.length; j++){
tempArr.push(myArrays[j][i]);
}
myObj.push(tempArr);
}
console.log(myObj);
}
function calculateMaxLength(myArrays){
var maxLength = 0;
for(var j=0; j<myArrays.length; j++){
var tempLength = myArrays[j].length;
if(maxLength < tempLength){
maxLength = tempLength;
}
}
return maxLength;
}
Теперь вызовите, как показано ниже:
var array1= ['ab','bc'];
var array2= [12,23];
var array3= ['vw','wx'];
prepareObjectOfArrays([array1, array2, array3]);
Как я уже сказал, это более динамичная реализация без жесткого кодирования допущений и даже будет работать с большим количеством входных данных. Там может быть больше угловых случаев, но это почти полностью динамично. Проверьте с помощью следующих входов:
var array1= ['ab','bc','de', 'er'];
var array2= [12,23,34];
var array3= ['vw','wx','yz'];
var array1= ['ab','bc','de', 'er'];
var array2= [12,23,34,45,56,78];
var array3= ['vw','wx','yz'];
var maxArrLength
, все остальное реализация в ответе позаботится.
Вы можете использовать функцию zip
из библиотеки lodash
.
_.zip([ab, bc], [12, 23], [vw, wx]);
// -> [[ab, 12, vw], [bc, 23, wx]]
попробуйте что-то вроде этого:
array1= ['ab','bc',33];
array2= [12,23,35];
array3= ['vw','wx',34,'hh'];
array4= ['vw1','wx1',36];
//object
var mixarrays = {
minmax:'min',//decide col max or min
decide_size:function(arrs){
var size = this.minmax=='max'? 0 :999999;
for(i in arrs){
if(arrs[i].length > size && this.minmax=='max'){
size = arrs[i].length;
}else if(arrs[i].length < size && this.minmax=='min'){
size = arrs[i].length;
}
}
return size;
},
init:function(arrs){
cols = this.decide_size(arrs);
var mixedarray = [];
for(var i=0;i<cols;i++){
mixedarray[i] = [];
for(j in arrs){
mixedarray[i].push(arrs[j][i]);
}
}
return mixedarray;
}
};
//[array1,array2,array3,array4];//array of arrays
console.log(mixarrays.init([array1,array2,array3,array4]));