猿问

使用排序方法声明一个内部有函数的函数

假设我正在尝试以“编程方式”制作更多函数,sort(fn) 我只是在尝试声明一个将所有内容汇总在一起的函数的方式。


我懂了:


myArrayObjs=[[

  { name: "charles", numb: 28 },

  { name: "Theo ", numb: 22 },

  { name: " Sagna", numb: 27  }

]

我想对它进行排序,得到一个数组的顺序,记住它的麻木 obj,因此基本上可以是这样的:


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“没有定义”或类似的东西。


我究竟做错了什么?


qq_花开花谢_0
浏览 136回答 1
1回答

侃侃尔雅

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')
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答