1

I want to parse my array to 4 equal intervals. For example, array [12, 48] parse to 4 intervals [12,21], [21, 30], [30, 39], [39, 48]. I could only parse my Array to pairs (code here). But I don't know how to do what I want.

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);

My output is:

[ , , [ 2, 3 ], [ 3, 4 ], [ 4, 5 ], [ 5, 6 ] ]
2
  • how to know the difference in each pair is 9 like from [12, 21] ? Commented Sep 30, 2017 at 8:01
  • @caramba, (48-12)/4 = 9. Commented Sep 30, 2017 at 8:03

4 Answers 4

2

You can calculate the interval and use it to map in an array of length 4 over the index.

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])
Sign up to request clarification or add additional context in comments.

1 Comment

That's the simplest
2

You could take a length for each interval and add the lenght to the start value for each part.

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));

Another approach by using length as increment value.

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));

Comments

0

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)

Comments

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
}

// just call the function as sep4([12, 48])

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.