【发布时间】:2014-09-25 06:47:38
【问题描述】:
如何在一个数字序列中找到最低值和最高值的对?我想保存折线图的低/高值。
你能帮我写一段伪代码,这样人们就可以用他们最喜欢的编程语言来实现答案。
我将使用它通过 D3.js 生成折线图。如果有人知道如何用 D3 做到这一点,我会很高兴知道它。
数据样本: [20, 10, 11, 5, 15, 25, 10, 5, 15, 17, 26, 15, 7]
Desired Result:
array[0][high] = 20
array[0][low] = 5
array[1][high] = 25
array[1][low] = 5
array[2][high] = 26
array[2][low] = 7
这是我目前所拥有的(在 Javascript 中)。你们看到我们可以优化这段代码了吗?
// data sample
var data_sample = Array(5, 15, 20, 15, 6, 11, 21, 14, 9, 4, 15, 20, 15, 1, 10, 20, 4);
// algo
var low = high = k = 0;
var log = [];
for (var i = 0; i < data_sample.length; i++) {
var current = data_sample[i];
var m = i+1;
var next = data_sample[m];
if (typeof next == 'undefined') {
break;
}
if (current < next) {
if (low === 0) {
low = current;
} else if (current < low) {
low = current;
}
} else if (current > next && low !== 0) {
if (high === 0) {
high = current;
} else if (current > high) {
high = current;
}
}
if (low > 0 && high > 0){
log[k] = [];
log[k]['low'] = low;
log[k]['high'] = high;
k++
low = high = 0;
}
};
提前谢谢你
【问题讨论】:
-
你的数组是这样初始化的还是只是一个错字?它不是多维的。
-
它是一个二维数组。这只是为了说明生成的数组将包含 0 维度中序列的第一个高/低值和 1 维度中的第二个低/高值,依此类推。
-
我发布了一个答案但删除了它,因为它取决于选择 3 个结果,这取决于您选择吗?
标签: javascript d3.js data-visualization