Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 使用排序方法声明内部包含函数的函数_Javascript - Fatal编程技术网

Javascript 使用排序方法声明内部包含函数的函数

Javascript 使用排序方法声明内部包含函数的函数,javascript,Javascript,假设我正在尝试以更“程序化”的方式创建一个函数sort(fn) 我只是想用一种方法声明一个函数,它将所有的函数汇总在一起 我明白了: myArrayObjs=[[ { name: "charles", numb: 28 }, { name: "Theo ", numb: 22 }, { name: " Sagna", numb: 27 } ] 我想对它进行排序,得到数组的顺序,记住它的麻木对象, 因此,基本上可以是: myArrayObjs.sort(function Objs(

假设我正在尝试以更“程序化”的方式创建一个函数
sort(fn)
我只是想用一种方法声明一个函数,它将所有的函数汇总在一起

我明白了:

myArrayObjs=[[
  { name: "charles", numb: 28 },
  { name: "Theo ", numb: 22 },
  { name: " Sagna", numb: 27  }
]
我想对它进行排序,得到数组的顺序,记住它的麻木对象, 因此,基本上可以是:

myArrayObjs.sort(function Objs(obj1,obj2){return obj1.numb-obj2.numb})
让我们假设,如果我以如下方式记录此日志:

console.log(myArrayObjs.sort(function Objs(obj1,obj2){return obj1.numb-obj2.numb}))
回报将是

3) [{…}, {…}, {…}]
0: {name: "Theo ", numb: 22}
1: {name: " Sagna", numb: 27}
2: {name: "charles", numb: 28}
length: 3__proto__: Array(0)
完美

但问题是:如何总结以前在通用函数中公开的所有内容?只要设置正确的参数,我就可以随时调用

我尝试的是:

function myNewArray(myArrayObjs,obj1,obj2)
{
 myArrayObjs.sort(function Objs(obj1,obj2)
  {
    return obj1-obj2
  }
 )
}
但是当我尝试
console.log
它时,它回击说参数
obj1
obj2
是“未定义”或类似的


我做错了什么?

排序回调中的
obj1
obj2
myArrayObjs
数组中的两个对象,
sort
函数将把它们传递给回调函数,因此您的
myNewArray
函数应该收到字段名,而不是
obj1
obj2
,例如:

function myNewArray(myArrayObjs, field)
{
    return myArrayObjs.sort(function Objs(obj1, obj2)
        {
            return obj1[field] - obj2[field]
        }
    )
}

let result = myNewArray(myArrayObjs, 'numb')

你忘了返回它:
返回myArrayObjs.sort…
@georg公平地说,排序会改变数组,所以你不一定需要返回。@VLAZ,当然,但我假设OP正在执行
控制台.log(thisFunc(…)
@georg公平地说,我也不确定发生了什么。OP提到未定义
obj1
obj2
,因此可能
console.log
myNewArray
函数中,在不知道OP想用它做什么以及如何做的情况下,无法确切地了解错误和原因。