javascript - 为 noUiSlider 构建动态 Javascript 对象

标签 javascript jquery arrays object nouislider

我正在尝试在 JavaScript 中动态为我的 noUiSlider range 属性构建一个对象。创建基于步骤的范围 slider 需要一个 min 值和一个 max 值,并且两者之间的所有值都应该是项目总值(value)的百分比。以下示例将创建一个具有 3 个步长的范围 slider :1、5 和 10。

range: {
    'min': 1,
    '50%': 5,
    'max': 10
}

我的数据如下:

[
  {width: "1"},
  {width: "1.5"},
  {width: "2"},
  {width: "3"},
  {width: "4"}
]

该数组可以是任意数量的宽度。对于传入的数据,我需要将其格式化为范围 slider 接受的对象。与此类似的东西:

{                       {
    'min': 1,               'min': 1,
    '25%': 1.5,             '16.66%': 1.5,
    '50%': 2,      OR       '33.32%': 2,
    '75%': 3,               '49.97%': 3,
    'max': 4                '66.66%': 4,
}                           '83.32%': 5,
                            'max': 6
                        }

key 值必须包含一个 min 值作为第一项,并包含一个 max 值作为最后一项。其余键必须根据 width 数组中的项目数计算为百分比,并且值将是数组的 width 值。

我尝试使用以下代码创建 obj,但不知道如何将第一个和最后一个键值设置为 minmax

function toObject(arr) {
    var obj = {};
    for (var i = 0; i < arr.length; ++i)
        if (arr[i] !== undefined) obj[i*10] = arr[i];
    return obj;
}

最佳答案

在迭代时检查剩余元素怎么样:

function toObject(arr) {
    var obj = {};
    for (var i = 0; i < arr.length; ++i) {
        var remaining = arr.length - i;
        if (arr[i] !== undefined) {
            if (remaining == arr.length) {
                obj['min'] = arr[i].width;
            }
            else if (remaining === 1) {
                obj['max'] = arr[i].width;
            }
            else {
                obj[(i*10).toString()] = arr[i].width;
            }
        }
    }
    return obj;
}

来自控制台的测试:

>var a = [
  {width: "1"},
  {width: "1.5"},
  {width: "2"},
  {width: "3"},
  {width: "4"}
];
>
>toObject(a)
{10: "1.5", 20: "2", 30: "3", min: "1", max: "4"}

关于javascript - 为 noUiSlider 构建动态 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46385463/

相关文章:

javascript - div 中的 scrollTop 不起作用

javascript - getSelection 不适用于 Chrome 中的图像

javascript - JSHint 的 "function declarations should not be placed in blocks"太宽泛了吗?

jquery - 单击缩略图并将图像加载到空 div 中

java - 获取Jlist中String的值

java - Java 中的多维数组 - 为什么会发生错误?

ruby - 用每个第 n 个元素压缩数组

Javascript 优化,从哪里开始?

jquery - 使用跨域ajax时的第3方cookie问题

javascript - 如何将 "slide"和 "slid"事件附加到 Bootstrap 工具包的轮播中?