将数组解析为等间隔JS
Parse array to equal intervals JS
我想将我的数组解析为 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 ] ]
您可以为每个间隔取一个长度,然后将长度添加到每个部分的起始值。
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));
您可以计算间隔并使用它在索引上映射长度为 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])
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)
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])
我想将我的数组解析为 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 ] ]
您可以为每个间隔取一个长度,然后将长度添加到每个部分的起始值。
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));
您可以计算间隔并使用它在索引上映射长度为 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])
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)
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])