Javascript 如何将json对象键作为参数传递给函数
我想创建一个函数,通过两个键对json对象进行排序,并将其作为参数传递给函数,如下所示:Javascript 如何将json对象键作为参数传递给函数,javascript,arguments,Javascript,Arguments,我想创建一个函数,通过两个键对json对象进行排序,并将其作为参数传递给函数,如下所示: function sort_json_key1_then_key2(jsonObj, key_1, key_2) { jsonObj.sort(function(a, b) { if (a.key_1 == b.key_1) { return a.key_2 == b.key_2 ? 0 : +a.key_2 > +b.key_2 ? 1 : -1;
function sort_json_key1_then_key2(jsonObj, key_1, key_2) {
jsonObj.sort(function(a, b) {
if (a.key_1 == b.key_1) {
return a.key_2 == b.key_2 ? 0 : +a.key_2 > +b.key_2 ? 1 : -1;
}
return +a.key_1 > +b.key_1 ? 1 : -1;
});
}
以下面的json对象为例:
var obj = [
{"cl":"8","fare":"500.0","name":"41"},
{"cl":"7","fare":"200.0","name":"37"},
{"cl":"10","fare":"200.0","name":"33"},
{"cl":"9","fare":"500.0","name":"29"},
{"cl":"6","fare":"500.0","name":"29"}
];
我调用函数按“票价”然后按“cl”排序,如下所示:
var sorted = sort_json_key1_then_key2(obj, 'fare', 'cl');
var json_string = JSON.stringify(sorted);
console.log(json_string);
但我在控制台中得到“未定义”作为输出。我认为我没有正确地将键作为参数传递以正确运行。你知道怎么解决这个问题吗?你必须使用。另外,正如您期望函数返回结果一样,您应该实际返回排序数组。由于.sort()
对原始数组进行了变异,您可能希望通过将数组扩展到一个新数组([…jsonObj]
)来克隆该数组,以便该函数是纯函数:
function sort_json_key1_然后_key2(jsonObj,key_1,key_2){
return[…jsonObj].sort(函数(a,b){
如果(a[键1]==b[键1]){
返回a[key_2]-b[key_2];
}
返回a[key_1]-b[key_1];
});
}
var jsonObj=[{
“cl”:“8”,
“票价”:“500.0”,
“名称”:“41”
},
{
“cl”:“7”,
“票价”:“200.0”,
“名称”:“37”
},
{
“cl”:“10”,
“票价”:“200.0”,
“名称”:“33”
},
{
“cl”:“9”,
“票价”:“500.0”,
“名称”:“29”
},
{
“cl”:“6”,
“票价”:“500.0”,
“名称”:“29”
}
];
var sorted=sort_json_key1_然后_key2(jsonObj,'fare','cl');
控制台日志(已排序)代码>您必须使用。另外,正如您期望函数返回结果一样,您应该实际返回排序数组。由于.sort()
对原始数组进行了变异,您可能希望通过将数组扩展到一个新数组([…jsonObj]
)来克隆该数组,以便该函数是纯函数:
function sort_json_key1_然后_key2(jsonObj,key_1,key_2){
return[…jsonObj].sort(函数(a,b){
如果(a[键1]==b[键1]){
返回a[key_2]-b[key_2];
}
返回a[key_1]-b[key_1];
});
}
var jsonObj=[{
“cl”:“8”,
“票价”:“500.0”,
“名称”:“41”
},
{
“cl”:“7”,
“票价”:“200.0”,
“名称”:“37”
},
{
“cl”:“10”,
“票价”:“200.0”,
“名称”:“33”
},
{
“cl”:“9”,
“票价”:“500.0”,
“名称”:“29”
},
{
“cl”:“6”,
“票价”:“500.0”,
“名称”:“29”
}
];
var sorted=sort_json_key1_然后_key2(jsonObj,'fare','cl');
控制台日志(已排序)
请阅读Tryconsole.log(jsonObj)
请阅读Tryconsole.log(jsonObj)
如果不同意我的编辑,请随时回滚:)如果不同意我的编辑,请随时回滚:)