为noUiSlider构建动态Javascript对象
我正试图在为noUiSlider构建动态Javascript对象,javascript,jquery,arrays,object,nouislider,Javascript,Jquery,Arrays,Object,Nouislider,我正试图在JavaScript中为我的noUiSlider range属性动态构建一个对象。创建基于步长的范围滑块需要一个min和max值,两者之间的所有值都应该是项目总值的百分比。下面的示例将创建一个包含3个步骤(1、5和10)的范围滑块 range: { 'min': 1, '50%': 5, 'max': 10 } 我的数据如下: [ {width: "1"}, {width: "1.5"}, {width: "2"}, {width: "3"},
JavaScript
中为我的noUiSlider range属性动态构建一个对象。创建基于步长的范围滑块需要一个min
和max
值,两者之间的所有值都应该是项目总值的百分比。下面的示例将创建一个包含3个步骤(1、5和10)的范围滑块
range: {
'min': 1,
'50%': 5,
'max': 10
}
我的数据如下:
[
{width: "1"},
{width: "1.5"},
{width: "2"},
{width: "3"},
{width: "4"}
]
此数组可以是任意数量的宽度
。对于传入的数据,我需要将其格式化为范围滑块接受的对象。类似于此:
{ {
'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
}
键
值必须包含一个min
值作为第一项,一个max
值作为最后一项。其余的键必须根据宽度数组中的项数以百分比的形式计算,值应该是数组的width
value
我尝试用以下代码创建obj,但不知道如何将第一个和最后一个键值设置为min
和max
function toObject(arr) {
var obj = {};
for (var i = 0; i < arr.length; ++i)
if (arr[i] !== undefined) obj[i*10] = arr[i];
return obj;
}
函数对象(arr){
var obj={};
对于(变量i=0;i
迭代时检查其余元素如何:
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;
}
你所展示的只是目标。。。但并没有人试图自己解决这个问题,也没有人试图解决任何与代码相关的问题。这不是一个免费的代码编写服务,这里的目标是帮助您修复代码抱歉,我已经更新了我的问题。我需要它在这个值{string:number}中,并且“min”必须是第一个,其中“max”是对象中的最后一个。@Romes若要获得一个数字作为值,您可以将该值包装在
parseInt(value,10)
中,如下所示:parseInt(arr[i].width,10)
。就顺序而言,对象的顺序是不相关的,因为它提供了恒定的时间查找O(1)。换句话说,您将始终能够通过调用键来获得所需的值。
>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"}