2015-05-24 3 views
0

У меня есть четыре входных массивов, которые все соответствуют с один выходной массив как так:Справка по форматированию данных и массиву (nodejs)?

var arr1 = [.84, .01, .95, 1, .22, .453, .194, .43]; 
var arr2 = [.54, .09, .10, 0, .76, .12, .41, .99]; 
var arr3 = [1, .26, .90, .65, .88, .33, .854, .414]; 
var arr4 = [.65, .84, .184, .81, .04, .09, 0, .46]; 

var output = [1, 0, 0, 1, 1, 1, 0, 1]; 

arr1, arr2, arr3 и arr4 являются входные массивы и выход является массивом. Мне нужно, чтобы иметь возможность форматировать эти данные таким образом, чтобы каждый соответствующий элемент из входных массивов помещены в один массив и соответствующий элемент в выходном массиве помещается в другом массиве, например, так:

var new = [{input: [.84, .54, 1, .65], output: [1]}, {input: [.01, .09, .26, .84], output: [0]}, ... {input: [.43, .99, .414, .46], output: [1]}]; 

Все массивы одна и та же длина (приведенные выше примеры). Я использую Node.js; вся помощь будет принята с благодарностью!

ответ

0

Возможно, есть несколько более эффективных способов сделать это, но я бы просто использовал простой цикл.

var arr1 = [.84, .01, .95, 1, .22, .453, .194, .43]; 
var arr2 = [.54, .09, .10, 0, .76, .12, .41, .99]; 
var arr3 = [1, .26, .90, .65, .88, .33, .854, .414]; 
var arr4 = [.65, .84, .184, .81, .04, .09, 0, .46]; 

var output = [1, 0, 0, 1, 1, 1, 0, 1]; 
var new = []; 

for (var i = 0; i < output.length; i++) { 
    var input = [arr1[i], arr2[i], arr3[i], arr4[i]]; 
    var output = [output[i]]; 

    new.push({input: input, output: output}); 
} 

Это даст вам желаемый результат.

0

Это идеальное время для использования некоторых функциональных программ. Я предпочитаю lodash.js.

var arr1 = [.84, .01, .95, 1, .22, .453, .194, .43]; 
var arr2 = [.54, .09, .10, 0, .76, .12, .41, .99]; 
var arr3 = [1, .26, .90, .65, .88, .33, .854, .414]; 
var arr4 = [.65, .84, .184, .81, .04, .09, 0, .46]; 

var output = [1, 0, 0, 1, 1, 1, 0, 1]; 

_(_.zip(arr1, arr2, arr3, arr4)).zip(output); 

Взгляните на the documentation для _.zip, так как она имеет лучшее объяснение и другие примеры.

0

Маленькая чистая реализация, чем ниже, использует немного FP, но не нуждается в lodash. :)

var arr1 = [.84, .01, .95, 1, .22, .453, .194, .43]; 
var arr2 = [.54, .09, .10, 0, .76, .12, .41, .99]; 
var arr3 = [1, .26, .90, .65, .88, .33, .854, .414]; 
var arr4 = [.65, .84, .184, .81, .04, .09, 0, .46]; 

var output = [1, 0, 0, 1, 1, 1, 0, 1]; 

var transformed = output.map(function(v, i) { 
    return { 
    input: [arr1[i], arr2[i], arr3[i], arr4[i]], 
    output: [v] 
    }; 
}); 
0
var resultsArray = [] 
for(var i =0; i < output.length; i++){ 
    var currentRound = {input:[ arr1[i], arr2[i], arr3[i], arr4[i]], output: output[i]} 
    resultsArray.push(currentRound) 
} 

, которые должны делать то, что вы хотите

редактировать: супер поздно к партии.

Смежные вопросы