Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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 如何将json对象键作为参数传递给函数_Javascript_Arguments - Fatal编程技术网

Javascript 如何将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;

我想创建一个函数,通过两个键对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;
        }

        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');

控制台日志(已排序)
请阅读Try
console.log(jsonObj)
请阅读Try
console.log(jsonObj)
如果不同意我的编辑,请随时回滚:)如果不同意我的编辑,请随时回滚:)