簡體   English   中英

在JavaScript中循環遍歷兩個數組並構造一個函數

[英]Loop through two Array in JavaScript and Constructing a function

我在Javascript中有兩個數組,如下所示:

Array one = new Array();
one.push(20061001);
one.push(20061002);
one.push(20061003);
one.push(20061120);


Array two = new Array();
two.push(3.0);
two.push(3.1);
two.push(3.2);
two.push(3.3);

現在我需要如何遍歷此數組並構造一個函數,如圖所示

function NoisyData() {
return "" + 
"Date,A\n" +
"20061001,3.0\n" +
"20061002,3.1\n" +
"20061003,3.2\n" +
"20061120,4.0\n" ;
}

請幫助我,因為該怎么做?

這個怎么樣?

var one = new Array();
one.push(20061001);
one.push(20061002);
one.push(20061003);
one.push(20061120);


var two = new Array();
two.push('3.0');
two.push('3.1');
two.push('3.2');
two.push('3.3');



function NoisyData() {

    var result = "Date,A\n";
    for(var i = 0; i < one.length;i++){

        result += one[i] + "," + two[i] + "\n"; 

    }

    return result;

}

alert(NoisyData());

你的意思是

function NoisyData() {
  var txt = "Date,A\n" 
  for (var i=0, n=one.length;i<n;i++) {
    txt += one[i]+","+two[i]+"\n"
  }
  return txt
}

根據KooiInc的帖子進行更新

<script>
var one = [20061001,20061002,20061003,20061120]
  , two = [3.0,3.1,3.2,3.3]
  , combined = function(res,two){
       var i = one.length;
       while(i--){
          res[i]+=','+two[i].toPrecision(2);
       }
       res.splice(0,0,'Date,A');
       return res.join('\n')
    }(one.slice(0),two); 
alert(combined);
</script>

代替one.slice(0),one.clone()可以實現為
Array.prototype.clone = function() { return this.slice(0); }

或者如果可以修改原始數組,則只傳遞一個本身

長數組的更快方法是:

var one = new Array();
one.push(20061001);
one.push(20061002);
one.push(20061003);
one.push(20061120);
var two = new Array();
two.push(3.0);
two.push(3.1);
two.push(3.2);
two.push(3.3);
function NoisyData() {
var ret = [];
ret.push("Date,A");
for (var i=0;i<one.length;i++){
ret.push(one[i]+','+two[i]);
}
 return ret.join('\n');
}
alert(NoisyData());

您的代碼可以短很多。 您無法在javascript中鍵入變量(例如Array one )。 在大多數情況下,要聲明一個數組, 數組文字就足夠了。
如果數組的長度相同 ,則可以使用代碼將它們組合為所需的字符串:

var one = [20061001,20061002,20061003,20061120]
  , two = [3.0,3.1,3.2,3.3]
  , combine = function(a1,a2){
       var i = -1, len = a1.length, res = ['Date,A'];
       while(++i < len){
          res.push(a1[i]+','+a2[i].toPrecision(2));
       }
       return res.join('\n');
    }(one,two);

嘗試一下@ http://jsfiddle.net/KooiInc/jdn6U/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM