将数组解析为等间隔JS

时间:2017-09-30 07:59:09

标签: javascript arrays parsing intervals

我想将我的数组解析为4个相等的间隔。例如,数组[12,48]解析为4个区间[12,21],[21,30],[30,39],[39,48]。我只能解析我的数组到对(代码在这里)。但我不知道该怎么做我想要的。

var arrayTest = [];
for (var i = 0; i < 1000; i++) arrayTest[i] = i;
var ab = [2, 6];
start = ab[0];
finish = ab[1];
var ab_new = [];

for (var i = start; i <= finish; i++) ab_new[i]= arrayTest[i];
var output = [];
for (var i = start; i < ab_new.length - 1; ++i) {
    output[i] = [];
    output[i].push(ab_new[i]);
    output[i].push(ab_new[i + 1]);
}
console.log(output);

我的输出是:

[ , , [ 2, 3 ], [ 3, 4 ], [ 4, 5 ], [ 5, 6 ] ]

4 个答案:

答案 0 :(得分:2)

您可以为每个间隔取一个长度,并将长度添加到每个部分的起始值。

function getIntervals(range, parts) {
    var result = [],
        length = (range[1] - range[0]) / parts,
        i = 0,
        t;
        
    while (i < parts) {
        t = range[0] + i * length;
        result.push([t, t + length]);
        i++;
    }        
    return result;
}

console.log(getIntervals([12, 48], 4));

使用长度作为增量值的另一种方法。

function getIntervals(range, parts) {
    var result = [],
        length = (range[1] - range[0]) / parts,
        i = range[0];
        
    while (i < range[1]) {
        result.push([i, i += length]);
    }        
    return result;
}

console.log(getIntervals([12, 48], 4));

ES6

function getIntervals(range, parts) {
    var l = (range[1] - range[0]) / parts,
        i = range[0];
        
    return Array.from({ length: parts}, _ => [i, i += l]);
}

console.log(getIntervals([12, 48], 4));

答案 1 :(得分:2)

您可以计算间隔并使用它在索引上以长度为4的数组进行映射。

const ab = [12, 48]

const start = ab[0];
const end = ab[1];
const interval = (end - start) / 4;

const out = Array(4)
  .fill()
  .map((_, i) => [start + i*interval, start + (i + 1) * interval])

答案 2 :(得分:0)

&#13;
&#13;
let a=[12,48]; // your array 
var interval = 4; 
var diff =(a[1]-a[0])/interval; // calculating the diff
var start = a[0];               //start value
var b =[];                      // output array
for(var i=0; i<interval; i++){   
  b.push( [start, start + diff]);  // for each iteration push start and start+diff
  start+=diff;
}
console.log(b)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

function sep4(inp){
    var diff = inp[1] - inp[0]
    var add = diff/4
    var ar = []

    for(i = 1; i < 5; i++){
        ar.push([inp[0], inp[0] + (add * i)])
    }

    return ar
}

//只需将函数调用为sep4([12,48])