Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Selectize.js:如何对整数值上的选项进行排序?_Javascript_Sorting - Fatal编程技术网

Javascript Selectize.js:如何对整数值上的选项进行排序?

Javascript Selectize.js:如何对整数值上的选项进行排序?,javascript,sorting,Javascript,Sorting,我有一系列选项,我将其输入selectize,如下所示: <select data-placeholder="Select #" id="my-select"></select> var myOptions = [1, 20, 7, 30, 90, 365].map( function ( value) { return { text: value, value: value }; }); $('#my-select')

我有一系列选项,我将其输入selectize,如下所示:

<select data-placeholder="Select #" id="my-select"></select>
var myOptions = [1, 20, 7, 30, 90, 365].map( function ( value) {
    return {
        text: value,
        value: value
    };
});  
$('#my-select').selectize({
    options: myOptions,
    create: true,
    sortField: {
        field: 'text',
        direction: 'asc'
    }
});

var myOptions=[1,20,7,30,90,365].map(函数(值){
返回{
文本:值,
价值:价值
};
});  
$(“#我的选择”)。选择({
选项:myOptions,
创造:真的,
索特菲尔德:{
字段:“文本”,
方向:“asc”
}
});
当我加载视图时,选择框出现,选项第一次排序正确,但当我添加自定义选项时,列表不会按排序顺序正确更新。看起来列表确实被重新引用了,但它假定字段“text”的类型为string而不是整数。在selectize中,是否有方法指定基于整数的字段的排序

下面是在selectbox初始化时以及在我向其添加自定义输入100后,选项顺序的外观

首字母------自定义输入后
1-----------------1
7------------------100
30-----------------7
90---------30
200-------90
365-------200

----------------------365

您正在排序字符串,而不是数字。也许你需要回拨号码。我如何编辑上面的问题帖子?我是SO的新成员(就发布问题而言)。在您的帖子下方,或通过单击链接。非常感谢您如此及时地回复@nina,并指出帖子下方的编辑链接,这是如此微妙,我在显而易见的情况下错过了它。谢谢。我找不到任何简单的方法通过他们的api来实现。我希望有更多图书馆经验的人可能会有一个简单的解决方案。插入数字的部分在哪里?如果你能插入一个数字,那么它就可以正确排序,我想。另一种方法是在添加选项后更新它们,以保存数值,而不是文本,如下所示:$(“#我的选择”)。选择({options:myOptions,create:true,sortField:[{field:'text',direction:'asc}],onOptionAdd:function(value,data){this.updateOption(value,{text:parseInt(data.text,10),value:parseInt(data.text,10)};});
var userAddedOption = parseInt($('#user_added_option').val(), 10); // assume its = 100
var myOptions =  [1, 7, 30, 90, 365];
myOptions.push(userAddedOption);
myOptions = myOptions.map(function(value) {
    return {
        text: value,
        value: value
    };
});
$('#my-select').selectize({
    options: myOptions,
    create: true,
    sortField: function(item1, item2) {
        return item1.value - item2.value;
    },
    onInitialize: function() {
        this.addItem(userAddedOption);
    }
});