楼主: 凡哥

[日记] JS代码点滴

[复制链接]
发表于 2024-8-14 21:19 | 显示全部楼层
凡哥 发表于 2024-8-14 20:09
官网如字典最可靠


老师你就挺可靠。
点评
回复

使用道具

 楼主| 发表于 2024-8-23 18:45 | 显示全部楼层

2024年8月23日 星期五

数组排序:中间大两头小

resortAr = (ar) => {
	let mid = ar.length % 2 === 0 ? ar.length / 2 - 1 : Math.floor(ar.length / 2);
	let ar1 = ar.filter((i, k) => k <= mid).sort((a, b) => a - b),
		ar2 = ar.filter((i, k) => k > mid).sort((a, b) => b - a);
	return [...ar1,...ar2];
};

评分

1

查看全部评分

点评
回复

使用道具

 楼主| 发表于 2024-8-23 18:52 | 显示全部楼层
行2:先获得数组的中间分界,被2整除时是数组长度减一(因为数组下标从0起算),否则是向下取整数组长度除以2的值;
行3~行4是同一行分开写:将传递来的数组取出数组两半后,依次按大到小、按小到大排序。其中,数组一分为二使用了过滤器 filter,数组下标小于等于中间分界的是一组,大于中间分界的是另一组;排序则用 sort 方法,给数字指定排序方式,分别是 a - b 和 b - a,如此,两个数组均按需排序成功。
行5:返回新数组,新数组是数组一和数组二的重新拼接。

评分

1

查看全部评分

点评
回复

使用道具

发表于 2024-8-24 20:39 | 显示全部楼层
这一串又是啥,
如果用到音频高度的话,跟个梭子一样,
压根儿看不懂
点评
回复

使用道具

 楼主| 发表于 2024-8-25 07:41 | 显示全部楼层
花简静 发表于 2024-8-24 20:39
这一串又是啥,
如果用到音频高度的话,跟个梭子一样,
压根儿看不懂

这是二分法重排序数组或字串的进厂考试题
点评
回复

使用道具

发表于 2024-8-25 09:44 | 显示全部楼层
凡哥 发表于 2024-8-25 07:41
这是二分法重排序数组或字串的进厂考试题

艾玛,厂妹不好当了。。、
点评
回复

使用道具

 楼主| 发表于 2024-9-3 18:42 | 显示全部楼层

2024年9月3日 星期二

从数组中批量获取不重复的数组内容

getRanData = (num, data) => {
	let len = data.length;
	if(len <= num) return data;
	let ar = Array(len).fill(0).map((id,key) => id + key);
	ar.sort(() => 0.5 - Math.random());
	ar.length = num;
	return ar.map(a => data[a]);
};

参数 num 为要取出的条目总数,data 为从中抽取的原数组。

评分

1

查看全部评分

点评
回复

使用道具

 楼主| 发表于 2024-9-3 18:51 | 显示全部楼层
函数有两个返回分支:其一,若数组长度(即元素总量)小于等于要取出的数量,则无需任何操作,直接返回原数组;其二,返回所需的随机而不会重复的数组内容。

核心任务中,先生成一个和原数组长度即 len 一样的临时数组 ar,该数组的元素最初是从 0 ~ len -1 的顺排数字,然后将其打乱顺序再截取前 num 位元素作为遍历的对象,遍历中以 ar 的值作为原数组的下标获取每一个 data 的元素并返回结果。

评分

1

查看全部评分

点评
回复

使用道具

 楼主| 发表于 2024-9-4 20:05 | 显示全部楼层

2024年9月4日 星期三

获取两个数之间不重复的随机数(含头尾数)

getRanAr = (min, max, num) => {
    let res = [];
    let ar = Array(max - min + 1).fill(min).map((id,key) => id + key);
    while(num > 0) {
        let idx = Math.floor(Math.random() * ar.length);
        res.push(ar[idx]);
        ar.splice(idx, 1);
        num --;
    }
    return res
};
参数:min,起始数;max,终止数;num,取出的随机数数。

评分

1

查看全部评分

点评
回复

使用道具

 楼主| 发表于 2024-9-4 20:05 | 显示全部楼层
取得是整数
点评
回复

使用道具

您需要登录后才可以回帖 登录 | 中文注册

本版积分规则

手机版|千山论坛 ( 冀ICP备2024055714号 )

GMT+8, 2025-9-15 13:50

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表