編寫一個函數,實現數組去重
- 要求不能使用系統(tǒng)方法
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){
//記錄循環(huán)次數
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('循環(huán)執(zhí)行次數: '+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循環(huán) 打印99乘法表
求整數1~100的累加值,但要求跳過所有個位為3的數
打印出第5個能同時被3、5、7整除的數
得到下面數組 ["blue","cyan","pink","red","black","green","yellow"] 中字符串"red"的索引值