javascript - JS 变量的动态名称

标签 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());
});

最佳答案

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

例如(对象中的变量):

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());
    }
}

其中对象键是“变量名称”,该键的值只是值

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

关于javascript - JS 变量的动态名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49732978/

相关文章:

javascript - 有什么方法可以取消/停止/中止 getScript 调用吗?

javascript - 如何将值传递到在外部 php 函数文件中创建的警报框中

javascript - preactjs 看到 [Object object] 而不是链接

javascript - 向 $resource 原型(prototype)添加一个函数

javascript - 具有匹配索引值的两个数组,切换类

javascript - 使用对象的属性来对象的对象数组

javascript - 在多维javascript对象中递归查找和替换

javascript - AngularJS 服务不返回 promise

javascript - Rails ejs 未定义方法

javascript - Expressjs 无法检测响应