1.编写尽可能简洁的javascript代码,找到在第一个数组array1中出现,而在第二个数组array2中没有出现的数字。
indexof()判断数字是否出现,join()用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
function findNullofNum(arr1,arr2){
var str = arr2.join("");
var result = [];
for (var i = 0,x = 0;i if(str.indexOf(arr1[i]) == -1)
result[x] = arr1[i];
x ++;
}
return result;
}
var b = findNullofNum(arr1,arr2);
2.编写函数,用于过滤一个数组内重复的元素,并用这些元素重构一个新的数组,新数组内也不能有重复元素。
var arrNum = [1,4,1,1,3,3,4,6,7,8,3,7,0,11,22,22];
将数组中重复的元素去掉,并将各元素放到新的数组中。原理:将重复的元素替换为空。
var str = arrNum.join(',');
var newArr = [];
for(var i = 0;i < arrNum.lenghth;i ++){
if(str.indexOf(arrNum[i])!= -1){
newArr[newArr.length] = arr[i];
}
while(str.indexOf(arrNum[i])!= -1){
str = str.replace(arrNum[i], '');
}
}
3.现有一个数组(元素为数字,并且有可能重复),请给Array.prototype增加一个方法(方法名自取),该方法能去掉数组中全部最大和最小的数字。
数组最大值
Array.prototype.max = function(){
return Math.max.apply(null,this);
}
数组最小值
Array.prototype.min = function(){
return Math.min.apply(null,this);
}
4.给定一个数组实现字符串反转,要求原地实现。
使用循环数组的方法:
var arr = new Array();
function myreverse(arr){
for(var i =0;i < arr.length/2;i ++){
var temp = arr[i];//交换变量
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
}
5.如何准确判断一个javascript对象是数组?
标准方法:
if(object.prototype.toString.call(a) == '[object Array]'){
//是数组对象
}
常用方法:
if(a.constructor == Array){
//是数组对象
}
6.写出一个javascript的函数,实现对一个数组去重的功能。
Array.prototype.unique1 = function(){
var res = [this[0]];
for(var i =1;i < this.length;i ++){
var repeat = false;
for(var j = 0;j < res.length;j ++){
if(this[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(this[i]);
}
}
return res;
}
7.请写出一个函数,功能是删除数组的指定下标元素。
array.pop();//删除最后一个元素,并返回该元素
array.shift();//删除第一个元素,数组元素位置自动前移,返回被删除的元素
array.splice(start,delCount);//从start的位置开始向后删除delCount个元素
Array.prototype.del = function(index){
if(isNaN(index)||index >= this.length){
return false;
}
for(var i = 0 ,n = 0;i ++)
if(this[i]!=this[index]){
this[n ++] = this[i];
}
}
this.length -= 1;
}
8.请写一个函数removeVoid(arr),删除该数组中值为“null,undefined”的项,返回原数组。
function ClearNullArr(arr){
for(var i = 0,len = arr.length;i < len;i ++){
if(!arr[i]||arr[i] == ''||arr[i] == undefined){
arr.splice(i,1);
len --;
i --;
}
}
return arr;
}
9.请给Array本地对象增加一个原型方法,它的用途是删除数组中重复的条目,并将数组返回。
<script type="text/javascript">
Array.prototype.delrepeat = function(){
var arr = this;
var _arr = new Array();
for(var i in arr){
if(i == 'delrepeat') continue;
if(_arr.length == 0) _arr.push(arr[i]);
for(var j = 0;j <_arr.length;j ++){
if(arr[i] == _arr[j]){
break;
}
if(j > _arr.length - 2) _arr.push(arr[i]);
}
return _arr;
}
script>
10.用js实现随机选取10~100之间的10个数字,存入一个数组,并排序。
function getRandom(istart,iend){//列出需要被选中的数据
var a1 = [];
for(var i = 0;i < 91;i ++){
a1[i] = i + 10;
}
//挑选出随机数据
var a2 = [];
for(var j = 0;j < 10;j ++){
a2.push(a1.splice(Math.floor(Math.random()*a1.length),1));
a2.sort();
alert(a2);
}
getRandom(10,100);
11.把两个数组合并,并删除第二个元素。
var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
var array3 = array1.concat(array2);
array3.splice(1,1);
12.根据每个元素的i属性,由小到大排序如下数组。
var arr=[{i:5,v:1},{i:2,v:4},{i:3,v:2},{i:1,v:5},{i:4,v:3}];
解析:
arr.sort(function(a,b){
return a.i-b.i;
})
对于一个数组,sort()默认按字符编码排序:
var testArray=[3,324,5345,6546,134,5654,665];
testArray.sort();
alert(testArray);
输出结果是:134 3 324 5345 5654 6546 665
现在要让它按照数值大小排序:
var testArray=[3,324,5345,6546,134,5654,665];
testArray.sort(function(a,b){
return a-b;
});
alert(testArray);
这里传递一个比较函数给sort,比较函数的逻辑是:如果两参数的差值小于0,则表示a必须出现在b前面,否则在b后面。
输出结果是:3 134 324 665 5345 5654 6546