JS变量的动态名称

时间:2018-04-09 12:27:31

标签: javascript

你能指导我如何用循环或类似的东西替换长的JavaScript吗?我创建了一些变量,然后在每次按键后调用一个方法。

var list1 = new List('list1', options);
var list2 = new List('list2', options);
var list3 = new List('list3', options);
var list4 = new List('list4', options);
var list5 = new List('list5', options);
var list6 = new List('list6', options);
var list7 = new List('list7', options);
var list8 = new List('list8', options);
var list9 = new List('list9', options);
var list10 = new List('list10', options);
var list11 = new List('list11', options);

$('.search-field').on('keyup', function () {
    window.scrollTo(0, 0);
    list1.search($(this).val());
    list2.search($(this).val());
    list3.search($(this).val());
    list4.search($(this).val());
    list5.search($(this).val());
    list6.search($(this).val());
    list7.search($(this).val());
    list8.search($(this).val());
    list9.search($(this).val());
    list10.search($(this).val());
    list11.search($(this).val());
});

2 个答案:

答案 0 :(得分:2)

您可以将变量分组为数组或对象。

例如(对象中的变量):

const n = 11;
var lists = {};

for(let i=1;i<=n;++i) {
    lists['list'+i] = new List('list'+i, options);
}

$('.search-field').on('keyup', function () {
    window.scrollTo(0, 0);
    for(let i=1;i<=n;++i) {
        lists['list'+i].search($(this).val());
    }
}

对象键是&#34;变量名&#34;和该值的值只是值

object[key] = value // write value
object[key]         // read value

答案 1 :(得分:0)

您可以用此替换您的代码。从空array开始。然后使用for循环添加元素,然后使用另一个for循环来调用函数

const list = [];
for (let i = 0; i < 11; i++) {
  list[i] = new List('list' + i, options);
}


$('.search-field').on('keyup', function () {
  window.scrollTo(0, 0);
  for (let i = 0; i < 11; i++) {
    list[i].search($(this).val());
  }

});