Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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
C# 使用jQuery将新项添加到排序数组中的适当位置_C#_Javascript_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

C# 使用jQuery将新项添加到排序数组中的适当位置

C# 使用jQuery将新项添加到排序数组中的适当位置,c#,javascript,jquery,asp.net-mvc,razor,C#,Javascript,Jquery,Asp.net Mvc,Razor,我正在使用C#和ASP.NET MVC3。我有一个javascript数组,当页面基于一些数据加载时,我正在创建该数组: var agencyData = []; @foreach(var agency in Model.Agencies) { <text>agencyData.push({value: '@agency.AgencyID', label: '@agency.Name'});</text> } var

我正在使用C#和ASP.NET MVC3。我有一个javascript数组,当页面基于一些数据加载时,我正在创建该数组:

var agencyData = [];
@foreach(var agency in Model.Agencies)
{
    <text>agencyData.push({value: '@agency.AgencyID', label: '@agency.Name'});</text>                    
}   
var-agencyData=[];
@foreach(模型代理中的var代理)
{
agencyData.push({值:'@agency.AgencyID',标签:'@agency.Name'});
}   
此数组按
标签
的字母顺序排序

我在页面上提供了将项目添加到此数组的功能。不幸的是,它将其添加到数组的末尾。我想将该项添加到数组中的适当位置,以便数组保持按字母顺序排序

此外,阵列非常庞大,大约8000件物品。所以我不认为在每次添加后使用数组是一个好的选择


有人知道怎么做吗?

为新元素找到合适的索引(使用)

切片和concat阵列

var agencyData = ["alpha", "beta", "gamma"];

var calculateIndexForInsertion = function(text, start, end){
    //add real search here
    return 2;
}
var newAgency = "c";

var index = calculateIndexForInsertion(newAgency , 0, agencyData.length);

agencyData = agencyData.slice(0, index).concat([newAgency]).concat(agencyData.slice(index))

为什么不
splice
尽管如此?@AndreyShchekin,因为切片工作得很好。。。如果您认为splice更好,并且通过基准测试/内存评测证实了这一点,那么这可能是真的;我承认,我从来没有比较过。就因为切片很好用。对于8000点-我不相信这会有什么不同(当然,我可能错了),我的观点是你不必做两个切片-你可以在
索引处做一个
拼接
,插入新项目。基本上
agencyData.splice(index,0,newAgency)