对象数组
const arr = [
{num:1,name:'张三'},
{num:2,name:'张三'},
{num:3,name:'张三'},
{num:4,name:'张三'},
{num:5,name:'张三'},
{num:6,name:'张三'}
]
// 筛选对象数组中 每一项最大的三个num值 , 形成一个新的对象数组 查找后例子如下
const newArr = [
{num:4,name:'张三'},
{num:5,name:'张三'},
{num:6,name:'张三'}
]
该回答引用ChatGPT
要筛选对象数组中每一项最大的三个num值,可以使用数组的sort()方法进行排序,然后再截取前三个元素,形成一个新的数组。
下面是一个实现该功能的代码示例:
const arr = [
{num:1,name:'张三'},
{num:2,name:'张三'},
{num:3,name:'张三'},
{num:4,name:'张三'},
{num:5,name:'张三'},
{num:6,name:'张三'}
];
const sortedArr = arr.sort((a, b) => b.num - a.num); // 按num值从大到小排序
const newArr = sortedArr.slice(0, 3); // 截取前三个元素
console.log(newArr); // [{num: 6, name: "张三"}, {num: 5, name: "张三"}, {num: 4, name: "张三"}]
在这个代码示例中,我们使用sort()方法对原数组进行排序,将元素按照num值从大到小排序,然后使用slice()方法截取前三个元素,将它们形成一个新的数组。
需要注意的是,sort()方法是原地排序,也就是说它会改变原数组的顺序,所以在使用该方法时需要注意。
参考GPT和自己的思路,可以使用sort方法对对象数组进行排序,然后取前三项即可,具体代码如下:
const arr = [
{ num: 1, name: '张三' },
{ num: 2, name: '张三' },
{ num: 3, name: '张三' },
{ num: 4, name: '张三' },
{ num: 5, name: '张三' },
{ num: 6, name: '张三' }
];
// 按照num值从大到小排序
arr.sort((a, b) => b.num - a.num);
// 取前三项
const newArr = arr.slice(0, 3);
console.log(newArr); // [{num: 6, name: '张三'}, {num: 5, name: '张三'}, {num: 4, name: '张三'}]
使用sort方法对对象数组排序时,可以传入一个比较函数作为参数,该函数返回值为负数时,表示a应该排在b的前面,返回值为正数时,表示a应该排在b的后面,返回值为0时,表示a和b相等,不需要交换位置。这里使用b.num - a.num来按照num值从大到小排序。
然后使用slice方法取前三项即可。
const arr = [
{num:1,name:'张三'},
{num:2,name:'张三'},
{num:3,name:'张三'},
{num:4,name:'张三'},
{num:5,name:'张三'},
{num:6,name:'张三'}
];
// 按 num 属性进行排序
arr.sort(function(a, b) {
return b.num - a.num;
});
// 取前三个元素
const newArr = arr.slice(0, 3);
console.log(newArr); // [{num: 6, name: "张三"}, {num: 5, name: "张三"}, {num: 4, name: "张三"}]
这里的 sort() 函数可以接收一个回调函数,用于指定排序的规则。回调函数返回值大于 0 表示需要交换两个元素的位置,小于 0 表示不需要交换,等于 0 表示相等。对于本例,回调函数中的 b.num - a.num 表示按 num 属性进行降序排序。然后,我们使用 slice() 函数截取前三个元素,形成新的数组。
1.首先对他们进行排序:(我一般用的就是sort,冒泡也用,其他的排序方法就很少用了),如果你是从大到小,那就截取前三个,相反则截取后三个,截取完之后将他们push到新的数组当中
2.其实我第一个想到的是Math.max,但是这个的话一次只能选择一个,还是建议用上面的方法
有问题可以问我
const arr = [
{ num: 1, name: '张三' },
{ num: 2, name: '张三' },
{ num: 3, name: '张三' },
{ num: 4, name: '张三' },
{ num: 5, name: '张三' },
{ num: 6, name: '张三' }
];
// 按照num值从大到小排序
arr.sort((a, b) => b.num - a.num);
const newArr = arr.slice(0, 3);
console.log(newArr);
const arr = [
{num: 1, name: '张三'},
{num: 2, name: '张三'},
{num: 3, name: '张三'},
{num: 4, name: '张三'},
{num: 5, name: '张三'},
{num: 6, name: '张三'}
]
console.log(arr
.sort((a, b) => a.num - b.num)
.slice(arr.length - 3, arr.length))