Array.prototype.sort()
默认排序是将元素转换为字符串,然后按照字符顺序进行比较Array.prototype.sort(a,b)
接受参数, a 和 b,根据第二点拓展
var numbers = [5, 10, 2, 8, 1];
numbers.sort(function(a, b) {
return b - a;
});
console.log(numbers);
// 输出: [10, 8, 5, 2, 1]
b-a>0,则a在b之后 =>小在后,大在前
b-a<0,则a在b之前 =>大在前,小在后
因此实现降序
var students = [
{ name: 'Alice', score: 85 },
{ name: 'Bob', score: 90 },
{ name: 'Charlie', score: 75 }
];
students.sort(function(a, b) {
return a.score - b.score;
});
console.log(students);
// 输出: [ { name: 'Charlie', score: 75 }, { name: 'Alice', score: 85 }, { name: 'Bob', score: 90 } ]
var arr = [
{ type: 'apple', value: 10 },
{ type: 'banana', value: 5 },
{ type: 'other', value: 8 },
{ type: 'other', value: 12 },
{ type: 'orange', value: 15 },
];
arr.sort((a, b) => (a.type === 'other' ? 1 : b.type === 'other' ? -1 : 0));
如果a.type == other
则 return 1
, a放后面
如果 b.type==other
则 return -1
,b放后面
如果a.type
和 b.type
都不等other
,则不改变顺序
因此实现将数组中 type===‘other’ 的项放入数组的最后
reduce( function(){prev,item,index,array},preVal )
接收两个参数。1、回调函数;2、初始值
回调函数中接收4个参数,
prev 回调初始值 (类似求和是 sum=0) 可以设置初始值( 参数),如果不设置初始值默认是数组中的第一个元素,遍历时从第二个元素开始遍历
item 每次循环的当前元素
index 每次循环的当前下标
array 原数组,
一般用前两个参数
var numbers = [1, 2, 3, 4, 5];
var sum = numbers.reduce(function(acc, num) {
return acc + num;
}, 0);
console.log(sum); // 输出: 15
var nestedArray = [[1, 2], [3, 4], [5, 6]];
var flatArray = nestedArray.reduce(function(acc, arr) {
return acc.concat(arr);
}, []);
console.log(flatArray); // 输出: [1, 2, 3, 4, 5, 6]
var words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple'];
var wordCount = words.reduce(function(acc, word) {
acc[word] = (acc[word] || 0) + 1;
return acc;
}, {});
console.log(wordCount);
// 输出: { apple: 3, banana: 2, orange: 1 }
var data = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 22 }
];
var summary = data.reduce(function(acc, person) {
acc.totalAge += person.age;
acc.averageAge = acc.totalAge / data.length; //平均值
return acc;
}, { totalAge: 0, averageAge: 0 });
console.log(summary);
// 输出: { totalAge: 77, averageAge: 25.666666666666668 }