将数组中的变量替换为循环中的数据

时间:2018-01-13 17:49:31

标签: javascript jquery

我对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分钟。我只需要选中复选框,然后获得结果。

谢谢!

2 个答案:

答案 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未定义