1.编写尽可能简洁的javascript代码,找到在第一个数组array1中出现,而在第二个数组array2中没有出现的数字。
var ary1=[1,2,3,4],ary2=[1,2,5,7]
function findSpecial(ary1,ary2){
// ary2为什么转换,indexOf在数组中IE6/7有兼容性问题,字符串没有这个问题
var str=ary2.join("");
var n=[];
for(var i=0;i<ary1.length;i++){
var cur=ary1[i];
if (str.indexOf(cur)==-1){
n.push(cur)
}
}
return n;
}
console.log(findSpecial(ary1,ary2))
2.编写函数,用于过滤一个数组内重复的元素,并用这些元素重构一个新的数组,新数组内也不能有重复元素。
var arrNum = [1,4,1,1,3,3,4,6,7,8,3,7,0,11,22,22];
// 数组去重复
function noRepetition(ary){
var result=[];
var obj={};
for(var i=0;i<ary.length;i++){
var cur=ary[i];
if (!obj[cur]){
obj[cur]=cur;
result.push(cur)
}
}
return result
}
console.log(noRepetition(arrNum))
3.现有一个数组(元素为数字,并且有可能重复),请给Array.prototype增加一个方法(方法名自取),该方法能去掉数组中全部最大和最小的数字。
Array.prototype.deleteTwoN=function(){
var ary=this.sort(function(a,b){return a-b});
ary.shift();
ary.pop();
return ary
};
4.如何准确判断一个javascript对象是数组?
if(Object.prototype.toString.call(a) == '[object Array]'){
//是数组对象
}
5.请写出一个函数,功能是删除数组的指定下标元素。
Array.prototype.del=function(index){
if (!isNaN(index)&&index<this.length){
this.splice(index,1)
}
}
ary.del(3);
6.请写一个函数removeVoid(arr),删除该数组中值为“null,undefined”的项,返回原数组。
function removeVoid(ary){
var temp=ary;
for(var i= 0;i<temp.length;i++){
console.log(temp[i])
if (!temp[i]){
temp.splice(i,1);
i--;
}
}
return temp;
}
7.用js实现随机选取10~100之间的10个数字,存入一个数组,并排序。
//一、编写随机数函数
function rn(n,m){
// 1.强制转换参数为数字
var n=Number(n);
var m=Number(m);
// 2.判断有一个不是有效数字就随机返回[0,1)
if (isNaN(n)||isNaN(m)){
alert("我不是有效数字")
return Math.random();
}
// 3.n,m顺序有变,调整
if (n<m){
var temp=n;
n=m;
m=temp;
}
return Math.round(Math.random()*(n-m)+m)
}
//二、编写排序,此处使用冒泡排序
function bubbleSort(ary){
var temp=null;
// 发个誓,false假设没有调换位置
var flag=false;
for (var i=0;i<ary.length-1;i++){
for(var j=0;j<ary.length-i;j++){
if (ary[j]>ary[j+1]){
temp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=temp;
// 调换位置改flag
flag=true;
}
}
// 外层循环判断flag,调换了,还原flag,没调换出去
if (flag){
flag=false
}else{
break
}
}
return ary
}
//三、获取10个10-100随机数,并排序
function getTen(){
var ary=[];
for(var i=0;i<10;i++){
ary.push(rn(10,100))
}
return bubbleSort(ary)
}
console.log(getTen())
8.把两个数组合并,并删除第二个元素。
var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
var array3=array1.concat(array2);
array2.length=0;
9.根据每个元素的i属性,由小到大排序如下数组。
//一、冒泡排序
var ary=[{i:5,v:1},{i:2,v:4},{i:3,v:2},{i:1,v:5},{i:4,v:3}];
var temp=null;
var flag=false
for(var i=0;i<ary.length-1;i++){
for(var j=0;j<ary.length-i-1;j++){
// 当前项[i]与后一项[i]作比较
if (ary[j]["i"]>ary[j+1]["i"]){
temp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=temp;
flag=true
}
}
if (flag){
flag=true
}else{
break
}
}
//二、sort法
ary.sort(function(a,b){
return a.i- b.i
})
console.log(ary)