javascript - 字典和声明变量

标签 javascript

我有各种不同屏幕尺寸的变量:

ST.screen_x_small = 480;
ST.screen_small = 768;
ST.screen_medium = 992;
ST.screen_large = 1200;

我想为每个变量声明一些要加载的项目。因此,例如,如果 x_small 我想加载 10,如果小,则加载 20,依此类推。

我已将每个尺寸放入字典中:

ST.content_per_load_dict = {'480' : 10, '768' : 20, '992' : 30, '1200' : 40};

然后:

var pageWidth = $(window).width();

    if(pageWidth < ST.screen_x_small)
    {
        ctx.contentPerLoad = ST.content_per_load_dict[ST.screen_x_small];
    }
    else if(pageWidth < ST.screen_small)
    {
        ctx.contentPerLoad = ST.content_per_load_dict[ST.screen_small];
    }
    else if(pageWidth < ST.screen_medium)
    {
        ctx.contentPerLoad = ST.content_per_load_dict[ST.screen_medium];
    }
    else
    {
        ctx.contentPerLoad = ST.content_per_load_dict[ST.screen_large];
    }

我的问题是:

  1. 有更好的方法吗?

  2. 有没有更高效的字典声明方式?理想情况下,我只想在 ST.screen_x_small var 中声明 480 而不是在字典中再次声明。

最佳答案

基于 pax162 的回答,您甚至可以进一步简化此操作。

// Order matters.
var ST = [ {name: 'x-small', width: 480, items: 10}, {name: 'small', width: 768, items: 20} ];
// ST.sort(function(a,b) { return a.width > b.width } )

ST.some(function (d) {
    if(pageWidth <= d.width) {
        ctx.contentPerLoad = d.items;
        return true;
    }
});

将您的维度和相关数据放入数组中的对象中,必要时进行排序,然后迭代该数组,这样您就不必为任何新项目输入额外的条件。

关于javascript - 字典和声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686340/

相关文章:

javascript - 将所有 div 堆叠到容器顶部,下面不留空间

javascript - 聊天 Smartsupp-Drupal 脚本

javascript - 如何在模板中使用异步命令显示数据?

javascript - 将 props 传递给 Vue 组件中的元素属性

javascript - jS 代码不工作,不显示总数

JavaScript 一行问题

javascript - 使用 forEach() 返回数组值

javascript - 如何在列表类处于事件状态时更改特定图像

javascript - 客户端反向地理编码(Google Maps V3 API)

javascript - 我如何在 raphael.js 中执行 rotateX?