Javascript 排序数组没有发生
我有一个这样的数组,我想忽略前两个对象,然后根据它的ISD代码按设计顺序排序 我的数据Javascript 排序数组没有发生,javascript,Javascript,我有一个这样的数组,我想忽略前两个对象,然后根据它的ISD代码按设计顺序排序 我的数据 "Output" : [{ Name:"Country" },{ Name :"CODE" }, { "Name" : "Alex", "Country" :"India", "CODE": "91" },{ "Name" : "David", "Coun
"Output" :
[{
Name:"Country"
},{
Name :"CODE"
},
{
"Name" : "Alex",
"Country" :"India",
"CODE": "91"
},{
"Name" : "David",
"Country" : "USA",
"CODE": "1"
},{
"Name" :"Ravi",
"Country" : "NZ"
"CODE": "61"
},{
"Name" :"Smith",
"Country" : "AUS"
"CODE": "64"
}
]
我在这里尝试的是
var sortedData = sortByKey(output,"CODE")
function sortByKey(array, key) {
return array.sort(function(a, b) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
var sortedData=sortByKey(输出,“代码”)
函数sortByKey(数组、键){
返回array.sort(函数(a,b){
变量x=a[key];变量y=b[key];
回报率((xy)?1:0);
});
}
但它正在重新整理数据。有谁能帮我这里出了什么问题。您可以选择
localeCompare
,并提供一些按正确顺序排序数值的选项
函数排序键(数组,键){
var-temp=数组切片(2);
温度排序(功能(a、b){
return(a[key]| |“”).localeCompare(b[key]| |“”,未定义,{numeric:true,敏感度:'base'});
});
返回数组.slice(0,2).concat(temp);
}
var数组=[{Name:“Country”},{Name:“CODE”},{Name:“Alex”,Country:“India”,CODE:“2”},{Name:“David”,Country:“USA”,CODE:“1”},{Name:“Ravi”,Country:“NZ”,CODE:“11”},{Name:“Smith”,Country:“AUS”,CODE:“24”};
log(sortByKey(数组,“代码”)代码>
。作为控制台包装{max height:100%!important;top:0;}
您可以使用localeCompare
以及一些用于按正确顺序排序数值的选项
函数排序键(数组,键){
var-temp=数组切片(2);
温度排序(功能(a、b){
return(a[key]| |“”).localeCompare(b[key]| |“”,未定义,{numeric:true,敏感度:'base'});
});
返回数组.slice(0,2).concat(temp);
}
var数组=[{Name:“Country”},{Name:“CODE”},{Name:“Alex”,Country:“India”,CODE:“2”},{Name:“David”,Country:“USA”,CODE:“1”},{Name:“Ravi”,Country:“NZ”,CODE:“11”},{Name:“Smith”,Country:“AUS”,CODE:“24”};
log(sortByKey(数组,“代码”)代码>
.as控制台包装器{max height:100%!important;top:0;}
这应该可以用,希望有帮助
var数据=[
{“姓名”:“国家”},
{“名称”:“代码”},
{“姓名”:“亚历克斯”,“国家”:“印度”,“代码”:“91”},
{“姓名”:“大卫”,“国家”:“美国”,“代码”:“1”},
{“名称”:“拉维”,“国家”:“新西兰”,“代码”:“61”},
{“姓名”:“史密斯”,“国家”:“澳大利亚”,“代码”:“64”}
];
var sortedJSON=sortByKey(数据,“代码”);
函数sortByKey(数组、键){
var其他=[],结果;
结果=数组.过滤器(函数(o){
如果(!o[key])其他。按(o);
返回(o[键]);
}).排序(功能(a、b){
变量x=a[key],y=b[key];
回报率((xy)?1:0);
});
返回其他。concat(结果);
}
控制台日志(sortedJSON)代码>这应该有效,希望有帮助
var数据=[
{“姓名”:“国家”},
{“名称”:“代码”},
{“姓名”:“亚历克斯”,“国家”:“印度”,“代码”:“91”},
{“姓名”:“大卫”,“国家”:“美国”,“代码”:“1”},
{“名称”:“拉维”,“国家”:“新西兰”,“代码”:“61”},
{“姓名”:“史密斯”,“国家”:“澳大利亚”,“代码”:“64”}
];
var sortedJSON=sortByKey(数据,“代码”);
函数sortByKey(数组、键){
var其他=[],结果;
结果=数组.过滤器(函数(o){
如果(!o[key])其他。按(o);
返回(o[键]);
}).排序(功能(a、b){
变量x=a[key],y=b[key];
回报率((xy)?1:0);
});
返回其他。concat(结果);
}
控制台日志(sortedJSON)代码>这是完美的工作方式。如果要查找数字排序,请使用parseFloat
如果不需要带有code
键的数据,请使用下面的方法
`
var JSON={
“产出”:[
{名称:“国家”},
{Name:“CODE”},
{“姓名”:“亚历克斯”,“国家”:“印度”,“代码”:“91”},
{“姓名”:“大卫”,“国家”:“美国”,“代码”:“1”},
{“名称”:“拉维”,“国家”:“新西兰”,“代码”:“61”},
{“姓名”:“史密斯”,“国家”:“澳大利亚”,“代码”:“64”}]
}
var sortedJSON=sortByKey(JSON.Output,“CODE”);
控制台日志(sortedJSON);
函数sortByKey(数组、键){
for(数组中的var obj){
if(数组[obj][key]==未定义){
删除数组[obj];
}
}
返回array.sort(函数(a,b){
如果(a[键]&&b[键]){
var x=parseInt(一个[key]);
var y=parseInt(b[key]);
回报率((xy)?1:0);
}
});
}
这是一个完美的工作方式。如果要查找数字排序,请使用parseFloat
如果不需要带有code
键的数据,请使用下面的方法
`
var JSON={
“产出”:[
{名称:“国家”},
{Name:“CODE”},
{“姓名”:“亚历克斯”,“国家”:“印度”,“代码”:“91”},
{“姓名”:“大卫”,“国家”:“美国”,“代码”:“1”},
{“名称”:“拉维”,“国家”:“新西兰”,“代码”:“61”},
{“姓名”:“史密斯”,“国家”:“澳大利亚”,“代码”:“64”}]
}
var sortedJSON=sortByKey(JSON.Output,“CODE”);
控制台日志(sortedJSON);
函数sortByKey(数组、键){
for(数组中的var obj){
if(数组[obj][key]==未定义){
删除数组[obj];
}
}
返回array.sort(函数(a,b){
如果(a[键]&&b[键]){
var x=parseInt(一个[key]);
var y=parseInt(b[key]);
回报率((xy)?1:0);
}
});
}
您正在尝试按键“ISD”排序,但实际上在您的数据库中的对象中没有这样的键array@PatrickHund我更新了我的问题。parseInt()
是比较代码时要查找的内容。您正在尝试按键“ISD”排序,但实际上,在您的数据库中的对象中没有这样的键array@PatrickHund我更新了我的问题。parseInt()
是比较代码时要查找的。我更新了我的问题。我正在根据某个键进行排序。同时忽略json的前两个元素。在您的输出中,我看不到排序顺序。这只不过是在炫耀自己