2015-06-12 2 views
1

Мне нужно проверить строку, если данный фрукт имеет правильную сумму в заданную дату. Я превращаю строку в массив 2d и повторяю столбцы. Этот код работает, но я хочу знать: есть ли лучший способ сделать это? Я чувствую, что это можно сделать, избегая 4 циклов.Эффективный способ превратить строку в массив 2d в Javascript

function verifyFruit(name, date, currentValue) {...} 
var data = "Date,Apple,Pear\n2015/04/05,2,3\n2015/04/06,8,6" 
var rows = data.split('\n'); 
var colCount = rows[0].split(',').length; 
var arr = []; 
for (var i = 0; i < rows.length; i++) { 
    for (var j = 0; j < colCount; j++) { 
     var temp = rows[i].split(','); 
     if (!arr[i]) arr[i] = [] 
      arr[i][j] = temp[j]; 
     } 
} 
for (var i = 1; i < colCount; i++) { 
    for (var j = 1; j < rows.length; j++) { 
     verifyFruit(arr[0][i], arr[j][0], arr[j][i]); 
     } 
} 
+3

Это невероятно, чтобы увидеть количество фруктового бизнеса пытается улучшить свой веб-сайт в настоящее время. –

ответ

2

Это было бы хорошим кандидатом для Array.prototype.map

var data = "Date,Apple,Pear\n2015/04/05,2,3\n2015/04/06,8,6" 
var parsedData = data.split("\n").map(function(row){return row.split(",");}) 

Что карта делает итерация по массиву и применяет функцию проекции на каждом элементе, возвращающей новый массив в качестве результата.

Вы можете представить себе, что происходит, как это:

function projection(csv){ return csv.split(",");} 
var mappedArray = [projection("Date,Apple,Pear"),projection("2015/04/05,2,3"),projection("2015/04/06,8,6")]; 
+0

работает отлично! – loli

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