编写一个函数,实现数组去重
- 要求不能使用系统方法
function arr_unique(arr) {
//定义一个新数组,用于存放去重后的元素
var newArr = [];
for (i = 0; i < arr.length; i++) {
//1-假设新数组中不存在当前元素
var flag = false;
for (var j = 0; j < newArr.length; j++) {
//2-if条件一旦成立,说明我们的假设是错误的,所以立马否定我们的假设
if (arr[i] == newArr[j]) {
flag = true;
break;
}
}
//3-将flag为false的元素加入新数组中并返回
if (flag == false) {
newArr[newArr.length] = arr[i];
}
}
return newArr;
}
编写一个函数, 判断一个数是不是质数(素数)
- 方案1:
function zhishu(n) {
var count = 0;
for (var i = 1; i <= n; i++) {
if (n % i == 0) {
count++
}
}
if (count <= 2) { //是质数
return true;
} else { //不是质数
return false;
}
}
- 方案2:
function zhishu2(n) {
//1-假设是质数
var flag = true;
//2-从2-(n-1)中,如若能找到一个被n整除的数,说明n不是质数
for (var i = 2; i < n; i++) {
if (n % i == 0) {
flag = false;
}
}
return flag;
}
编写一个函数, 实现求两个一维数组的补集
- 前提条件:arr2是arr1的子集
function getDiff(arr1, arr2) {
var diffArr = [];
for (var i = 0; i < arr1.length; i++) {
var flag = false;
for (var j = 0; j < arr2.length; j++) {
if (arr1[i] == arr2[j]) {
flag = true;
}
}
if (flag == false) {
diffArr[diffArr.length] = arr1[i];
}
}
return diffArr;
}
编写一个函数, 实现求两个任意正整数的最大公约数
function getMax(min,max){
//1-用于存放min和max的所有公约数
var arr=[];
for(i=1;i<=min;i++){
if(min%i==0&&max%i==0){
arr[arr.length]=i;
}
}
//2-取出数组最后一项,即为最大公约数
return arr[arr.length-1];
}
编写一个函数, 实现求两个任意正整数的虽小公倍数
function getMin(min,max){
//记录循环次数
var count=0;
//用于保存min的倍数
var times;
for(var i=min;i<=max;i++){
//times表示min(较小数)的倍数;min的倍数肯定比min本身要大
times=min*i;
count++;
if(times%max==0){
break;
}
}
console.log('循环执行次数: '+count);
return times;
}
编写一个函数, 实现求两个数组的交集
function getMixed(arr1,arr2) {
var obj = {};
var mixed=[];
for (var i = 0; i < arr1.length; i++) {
if(!obj[arr1[i]]){
obj[arr1[i]]=1;
}else{
obj[arr1[i]]++;
mixed[mixed.length]=arr1[i];
}
}
for(var j=0;j<arr2.length;j++){
if(!obj[arr2[j]]){
obj[arr2[j]]=1;
}else{
obj[arr2[j]]++;
if(obj[arr2[j]]==2){
mixed[mixed.length]=arr2[j];
}
}
}
return mixed;
}
编写一个函数, 实现求两个数组的并集
function getUnion(arr1,arr2){
var obj={};
var union=[];
for(var i=0;i<arr1.length;i++){
if(!obj[arr1[i]]){
obj[arr1[i]]=1;
union[union.length]=arr1[i];
}
}
for(var j=0;j<arr2.length;j++){
if(!obj[arr2[j]]){
obj[arr2[j]]=1;
union[union.length]=arr2[j];
}
}
return union;
}
补充练习题目
-
for循环 打印99乘法表
-
求整数1~100的累加值,但要求跳过所有个位为3的数
-
打印出第5个能同时被3、5、7整除的数
-
得到下面数组 ["blue","cyan","pink","red","black","green","yellow"] 中字符串"red"的索引值
网友评论