我对javascript有一些疑问。 我需要在我的页面上按不同的时间间隔创建一个自动排序功能。 用户可以通过选中复选框来选择时间间隔。行数据每3秒更新一次,自动排序需要每20秒触发一次。
此部分代码在用户检查时间间隔时运行,并返回数组中的值 [" percent_10s"," percent_30s"," percent_1m&#34 ] 。 用户可以选择一个或多个时间间隔。
function update_sort() {
$('#sort_form :checked').each(function() {
sort_vals.push($(this).val());
});
return sort_vals;
};
$('#sort_form').change(update_sort);
我的代码的另一部分存储百分比数据,并为每个文档每3秒更新一次该值。
var percent_10s = 10;
var percent_30s = 12;
var percent_1m = 15;
如何通过从第一部分传递变量数组来计算这一点。假设,用户选择 percent_10s 和 percent_30s ,我需要在每个文档的循环中获取此变量的总和,并将此值保存到div:.attr( ' data-percent',percentnts_grow)。 然后在网页 Tinysort 按数据百分比attribut进行排序。
数据每3秒更新一次,我希望每20秒文档获得最大百分数_grow值,比如10秒,开启10秒+ 1分钟。我只需要选中复选框,然后获得结果。
谢谢!
答案 0 :(得分:0)
使用对象作为变量,以便您可以使用数组值从对象中的相同属性名称获取关联值
//array from checkboxes by calling update_sort()
var sort_vals = ['percent_10s', 'percent_1m']
// object to look up values
var percents = {
percent_10s: 10,
percent_30s: 12,
percent_1m: 15
};
// reduce to get sum
var sum = sort_vals.reduce(function(a, c){
return a + percents[c];
},0);
console.log(sum)// expect 25 from percents.percent_10s + percents.percent_1m

答案 1 :(得分:0)
@Charlietfi方法工作得很完美,但我得到另一个问题,用var。 我把这个函数放在文档的开头。
var checked_sort = [];
function update() {
$('#sort_form :checked').each(function() {
checked_sort.push($(this).val());
});
};
$('#sort_form').change(update);
如果我像这样放var checked_sort = [];
,我会得到重复,因为函数会将新数据推送到数组而不会清除之前的条目。
["percent_5m", "percent_5m", "percent_10m", "percent_1m", "percent_5m", "percent_10m"]
如果我将var checked_sort = [];
放入函数中,则Array为Ok,但是下一个函数没有看到Array,因为 checked_sort未定义 。