这篇总结一些数组的大体知识轮廓以及一些常见的面试题。
1这里是书中关于数组方面的一些例子
//检测类数组对象
function isArrayLike(o){
if(o && typeof o == 'object' && isFinite(o.length) && o.length >= 0 && o.length === Math.floor(o.length) && o.length <
4294967296){
return true;
}else{
return flag;
}
}
//在数组中查找所有出现的x,并返回一个包含匹配索引的数组
function findall(a,x){
var a = [],
len = a.length,
pos = 0;
while(pos<len){
pos = a.indexOf(x,pos);
if(pos == -1) break;
a.push(pos);
pos = pos + 1;
}
return a;
}
//寻找两个数组中相同的元素中最小的元素
const a = [1, 2, 5, 9, 10]
const b = [3, 4, 6, 9, 10]
function findElement (a, b) {
let i = j = 0
while (i < a.length || j < b.length) {
if (a[i] === b[j]) {
return a[i]
} else if (a[i] > b[j]) {
j ++
} else if (a[i] < b[j]) {
i ++
}
}
return null
}
console.log(findElement(a, b))
2.数组去重
var arr=[1,1,1,2,2,1,3,1,3,4,5,6];
function arrDel(arr){
var result=[],
obj={};
for(var i in arr){
if(!obj[arr[i]]){ //判断对象的属性
result.push(arr[i]);
obj[arr[i]]=1;
}
}
return result;
}
console.log(arrDel(arr));
3. 数组冒泡排序
function bubbleSort(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
//获取前一个值和后一个值进行比较
if(arr[i]>arr[j]){
//创建中间变量 交换值
var cur=arr[j];
arr[j]=arr[i];
arr[i]=cur;
}
}
}
return arr;
}
4.数组快速排序
function quickSort(arr){
if(arr.length<=1){return arr};
//选基准值,可以是任意位置
var key=Math.floor(arr.length/2);
var keyValue=arr.splice(key,1)[0];
//定义两个数组
var left=[];
var right=[];
for(var i=0;i<arr.length;i++){
//小于基准的方左边、大于右边
if(arr[i]<keyValue){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//递归
return quickSort(left).concat([keyValue],quickSort(right));
//return typeof keyValue;
}
var array=[5,1,6,4,10,11,15,0,2];
console.log(quickSort(array));
//console.log(bubbleSort(array));
7.判断一个字符串中出现次数最多的字符,统计这个次数
var str=’addddfffssdfsadfsdfsafjsd’;
var json={}; //定义对象来存放 对象属性的值
//遍历字符串,将重复出现的字符 累加
for(var i=0;i<str.length;i++){
if(!json[str.charAt(i)]){
json[str.charAt(i)]=1;
}else{
json[str.charAt(i)]++;
}
}
var iMax=0;
var icur='';
console.log(json);//{a:3,d:8,f:7,s:6,j:1}
//遍历 json对象取最大值
for(var val in json){
if(json[val]>iMax){
iMax=json[val];
icur=val;
}
}
console.log('出现最多的字符:'+icur,'出现次数:'+iMax);