1,写一个函数,能判断传入的一个数值是否是质数,如果是质数返回true,如果不是质数返回false,(质数:从2开始只能被1和自身整数的数)
function isPrime(number) {
var isPrime = true;
//质数的约数只有2个;1和自身;
for (var i = 2; i < number; i++) { //number % i === 0,i不可能是它本身。所以能整除就不是质数。
if (number % i == 0) {
isPrime = false; //满足条件不是素数
break; //跳出循环
}
}
return isPrime; // 返回结果
}
var re = isPrime(17);
console.log(re);
2,写一个函数,能翻转传入的任意数组,并把翻转结果通过返回值返回。
function getArr(arr) {
var arrNew = []; //创建一个空数组
for (var i = arr.length - 1; i > -1; i--) {
arrNew[arrNew.length] = arr[i]; //循环将arr内下标从后到前传入新数组
}
return arrNew; //返回新数组
}
var re = getArr([10, 9, 8, 7, 6, 5, 4, 3, 2, 1]);
console.log(re);
// 翻转数组不使用新数组
for(var i = 0; i <arr.length /2; i ++){
var temp = arr[i];
arr[i] = arr[arr.length - 1 -i];
arr[arr.length - 1 -i] = temp;
}
for(var i = 0; i <arr.length; i++){
console.log(arr[i]);
}
3,冒泡
function getArr(arr) {
var max;
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
max = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = max;
}
}
}
return arr;
}
var re = getArr([1, 9, 5, 3, 20, 0]);
console.log(re);
4,有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
var arr = [1,3,6,9,34,67];
var input = parseInt(prompt('请输入一个数:'));
for(var i = arr.length - 1; i >= 0; i--){
if(input > arr[i]){ //遍历数组判断输入是否大于此数组元素
for(var j = arr.length - 1; j >= i;j--){
arr[j + 1] = arr[j]; //大于则将输入数前面元素都前移一位
}
arr[i+1] = input;
break;
}else { //判断输入数小于0的情况
for(var i = arr.length - 1; i >=0; i--){
arr[i+1] = arr[i];
}
arr[0] = input;
}
}
console.log(arr);
5.数组去重
function arrayDeduplication(arr){
var newArr = []; //定义一个新数组
for(var i = 0; i < arr.length; i++){
var bl = true;
for(var j = 0; j < newArr.length; j++){
if(arr[i] === newArr[j]){ //判断新数组中有没有传入数组的元素
bl = false;
break;
}
}
if(bl){
newArr[newArr.length] = arr[i];
}
}
console.log(newArr);
}
arrayDeduplication([0,6,6,9,8,5,5]);
6.合并数组
function concatArray(arr1,arr2){
for(var i = 0; i < arr2.length; i++){
arr1[arr1.length] = arr2[i];
}
return arr1;
}
var result = concatArray([0,1,2],[9,8,7]);
console.log(result);
7.随机生成验证码
function getCode(targetLength){
var str = 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890'; //定义一个码源
var targetStr = ''; //定义生成的字符串
for(var i = 0; i <targetLength; i++){ //参数用于决定生成几位数的验证码
targetStr += str[Math.floor((Math.random() * str.length))]; //遍历生成随机数
}
return targetStr;
}
console.log(getCode(4));
8.打印字符串中出现字母最多的次数和索引位置
function logArr(arr) {
var obj = {} //定义一个空对象存储属性唯一值
for (var i = 0; i < arr.length; i++) {
var charS = arr[i];
//判断对象中是否存在此字符串 存在则值加1 不存在创造此属性
obj[charS]? obj[charS]++ : obj[charS] = 1;
//在对象中创造此字符的数组存储字符出现的下标
obj[charS+'arr']? obj[charS+'arr'].push(i) : obj[charS+'arr'] = [i];
}
var max = 0;
var resultkey = '';
//遍历对象
for(var key in obj){
if(typeof obj[key] == 'number'){ //判断值为数组的情况,排除数组
if(max < obj[key]){
max = obj[key];
resultkey = key;
}
}
}
console.log('出现字母最多的是'+ resultkey, '次数是' + max, '索引位置为:' + obj[resultkey +'arr']);
console.log(obj);
}
logArr('aaarrrbggggqqqqqqquo');