function allCount(args){
if(typeof args=="number"){
var sum=0;
for(var i=0;i<=args;i++){
if(check(i)){
sum+=i;
}
}
return sum;
}
}
function check(num){
if(num>=2){
var bool=true;
for (var k = 2; k < num; k++) {
if (num % k == 0) {
bool = false;
break;
}
}
return bool;
}
}
console.log(allCount(100));
二、阶乘算法
function recursive(args){
if(args<=1){
return 1;
}
return args*recursive(args-1);
}
console.log(recursive(5));//120
三、字符串去重
方法1:es6写法
var str="abcdabcdaaaabbbbccccdddd";
function checkStr(){
var arr=str.split("");
return new Set(arr).join("");
}
console.log(checkStr(str));//abcd
方法2:数组方法进行去重
var str="abcdabcdaaaabbbbccccdddd";
function checkStr(){
var arr=str.split("");
for(var i=0;i<arr.length;i++){
for(var k=i+1;k<arr.length;k++){
if(arr[i]==arr[k]){
arr.splice(k,1);
k--;
}
}
}
return arr.join("");
}
console.log(checkStr(str));//abcd
方法3:使用数组+对象的方法去重
var a=[1,1,2,2,3,4,5,5];
function unique(args){
var item=[];
var obj={};
for(var i=0;i<args.length;i++){
if(!obj[args[i]]){
obj[args[i]]=1;
item.push(args[i]);
}
}
return item;
}
console.log(unique(a));// [1, 2, 3, 4, 5]
四、字符串原位翻转
var str="I am a Student";
var s=str.split(" ");
var data= s.map(function(value,index){
return value.split("").reverse().join("");
})
console.log(data);
var str="I am a Student";
console.log(str.split("").reverse().join("").split(" ").reverse());
五、查找字符串中元素个数最多的元素,并且输出个数
var str="aabbbccdddddjjjnnmaaa";
function findstr(args){
var arr=args.split("");
var num=0;//记录当前字符为几个
var list=[];
for(var i=0;i<arr.length;i++){
var count=1;
for(var k=i+1;k<arr.length;k++){
if(arr[i]===arr[k]){
count++;
arr.splice(k,1);
k--;
}
}
if(count>num){
num=count;
list[0]=[arr[i],num];
}
else if(count==num){
list[list.length]=[arr[i],num];
}
}
return list;
}
console.log(findstr(str));
六、数字转化为money的格式
var money=10000000000;
console.log(money.toLocaleString());//10,000,000,000
var arr=[1,2,3,4,1,2,3,4,1,2,3,4];
var num=4;
var list=[];
function checkIndex(array,n){
for(var i=0;i<array.length;i++){
if(array[i]==n){
list.push(i);
}
}
console.log(list);//[3, 7, 11]
}
checkIndex(arr,num);
九、寻找两个数组中相同的元素中最小的元素
var a=[1,2,3,4,5,6];
var b=[1,3,5,7,9,5,10,7];
function method(arr1,arr2){
var list=[];
for(var i=0;i<arr1.length;i++){
for(var k=0;k<arr2.length;k++){
if(arr1[i]==arr2[k]&&list.indexOf(arr1[i])==-1){
list.push(arr1[i]);
}
}
}
console.log(Math.min.apply(null, list));//1
}
method(a,b);
十、给定一个数组,里面任意两个数之和等于一个值,输出可能的几种情况
var info=[1,2,3,7,4,5,6,7,7,1,8,9];
var num=8;
function Count(array,n){
var list=[];
for(var i=0;i<array.length;i++){
//检测当前值是否已经存在
var ishas=true;
list.forEach(function(item){
if(item.indexOf(array[i])!=-1){
ishas = false;
return;
}
});
if(ishas){
var c=n-array[i];
if(array.indexOf(c,i+1)!=-1){
list.push([array[i],c]);
}
}
}
console.log(list);
}
Count(info,num);
十一、找数组内部缺失值,使得数组值是连续的
var arr=[1,3,4,7,2,6,9,5];
var min=Math.min.apply(null,arr);
var max=Math.max.apply(null,arr);
for(var i =min;i<=max;i++)
{
if(arr.indexOf(i)==-1){
console.log(i);//8
}
}
十二、数组面试题
题一
var b=[1,2,3,4];
var c=b;
c[0]=10;
console.log(b);//[10, 2, 3, 4]
因为数组是引用类型,所以c的值改变,b的值也随之改变。
那么怎么让b的值不改变呢?
使用数组拼接克隆b数组,那么克隆的数组就到了一个新的引用空间,就不会随之改变了。
var b=[1,2,3,4];
//克隆b数组
var h= b.concat();
var c=h;
h[0]=10;
console.log(b);// [1, 2, 3, 4]