在某种算法中生成数字数组

时间:2016-07-19 10:55:55

标签: javascript

所以我需要很少arrays

array 1 = [1,9,17,25,33,41];  
array 2 = [2,10,18,26,34,42]; 

等。
因此,每个array将最后一项加起来为8 但是,我需要动态生成它(使用JavaScript中的函数)。

4 个答案:

答案 0 :(得分:3)



var initValue = 5;
var diff = 8;
var len = 5;

function makeDiffArray(initValue, diff, len) {
  for (var i = 0, arr = []; i < len; i++) {
    arr.push(initValue);
    initValue += diff;
  }
  return arr;
}
console.log(makeDiffArray(initValue, diff, len));
&#13;
&#13;
&#13;

答案 1 :(得分:2)

这样的东西?

for(var i = 1; i<10;i++){
  eval("var array" + i + " = [" + i + "];");
  for(var j = 1; j<10; j++){
    eval("array" + i + ".push(array" + i + "[array" + i + ".length] + 8);");
  }
}

答案 2 :(得分:1)

您还可以尝试动态变量名称

var arrayCount = 2;
var initValue = 5;
var diff = 8;
var len = 5;

for(var i=1; i<=arrayCount; i++) {
    window['array'+i] = makeAnArray(i,diff,len);
    alert(window['array'+i]);
}

function makeAnArray(initValue) {
  var anArray = [];
  for (var j = 0, init = initValue; j < len; j++) {
    anArray.push(init);
    init += diff;
  }
  return anArray;
}

答案 3 :(得分:0)

我知道这已经被接受了,只是想在这里添加ES6版本。

let [init, diff, len] = [5, 8, 5], tmp = init;
let arr = Array(len).fill(init).map( (x, i) => (i) ? tmp += diff : x );
console.log(arr)