首页 > 代码库 > 一道返回不重复数组的测试题
一道返回不重复数组的测试题
编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。
注:n的值应该在0到30之间,超出应做处理,本文解法就不处理了。另本文解法不考虑算法性能,因为本人菜。
解法一
getRandomArray(n) {
var array = [];
for (let i = 2; i <= 32; i++) {
array.push(i);
}
for (let i = array.length; i > 0; i--) {
var j = Math.floor(Math.random() * i);
// var x = array[i - 1];
// array[i - 1] = array[j];
// array[j] = x;
[array[i - 1], array[j]] = [array[j], array[i - 1]];
}
console.log(array.splice(2, n));
}
解法二
getRandomArray1(n) {
console.log(n);
var array = [], obj={};
for (var i = 0; i < n; i++) {
var a = Math.floor(2 + Math.random() * 31);
if (!obj[a]) {
array.push(a);
obj[a] = a;
}else{
obj["repeatIndex" + i] = a; // 添加出现的重复值,便于查看
i--
}
}
console.log(array);
}
一道返回不重复数组的测试题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。