需求:提供一个小明对象 xm,里面有 name 名字,home 距离和一个数组 schoolArr,里面有很多结构和小明一样的人物对象,对这个数组进行排序,找到每个人距离小明的距离,把距离短的放前面。
思路:计算每个人到小明的距离,使用数组方法 sort,根据距离排序
代码实现:
let xm = {
name: "小明",
home: 700,
};
let schoolArr = [
{
name: "小A",
home: 500,
},
{
name: "小B",
home: 600,
},
{
name: "小C",
home: 701,
},
{
name: "小D",
home: 10,
},
{
name: "小E",
home: 800,
},
{
name: "小F",
home: 720,
},
];
const sort = (arr, info) => {
const dis = (p1, p2) => {
return Math.abs(p1.home - p2.home);
};
return arr
.map((it) => ({ ...it, dis: dis(it, info) }))
.sort((a, b) => a.dis - b.dis);
};
let resArr = sort(schoolArr, xm);