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想用它做什么以及如何做的情况下,无法确切地了解错误和原因。