(1)解释以下unshift()方法
unshift()方法,将参数成员添加到数组的顶部。
(2)用JavaScript实现数组合并的方法(要求去重)
这里可以使用ES6特性
var arr=[1,5,3];
var arr1=[13,2,3,8,5];
function(arr1,arr2){
var arr = arr1.concat(arr2);
return [...new Set(arr)];
}
(3)如何将一个值附加到数组中
//(1)可以在数组末尾添加
arr[arr.length]=value;
//(2) 可以使用push方法
arr.push(value);
(4)已知var numArr=[3,6,2,4,1,5],完成以下两个操作
①实现数组的倒序排列,输出[5,1,4,2,5,3]
numArr.reverse();
②实现数组的降序排列,输出[6,5,4,3,2,1]
numArr.sort(function(a,b){
return b-a; //降序
})
(5)JS里的函数参数arguments是数组吗?
arguments不是数组。虽然可以使用下标访问相应的参数,但是并非正真的数组。它不能使用数组的.join()、.concat() 、.pop()等数组的方法。
将伪数组转为真正的数组的方法 realArr = Array.prototype.slice.call(arguments)
(6)将下面两个数组合并,并且删除第二个元素
var arr1=['a','b','c'];
var arr2=['d','e','f'];
var arr3 = arr1.concat(arr2); // 合并数组
arr3.splice(1,1); //删除第二个元素
(7)数组有几种创建方式
- 使用字面量的方式 var arr=[] ; (最常用)
- 使用数组构造函数 var arr=new Array();
- 使用数组表达式 var arr=Array();
(8)如何删除数组成员?
为了不改变后面成员的索引值可以使用 delete arr[index] 删除
删除成员的同时删除所占位置 使用 arr.splice(index,1);
(9)用什么方法来判断一个对象的数据类型?如何判断数组?
用typeof判断对象类型,可以准确的检测值类型(也叫原始类型或者基本类型)
用instanceOf()判断是不是数组
(10)讲一下手写数组快速排序的步骤
- 在数据集合中找一个基准点
- 建立两个数组分别存储左边和右边的数组
- 利用递归,进行下一个的比较
function quicklySort(arr){
if(!arr instanceof Array){
return ;
}
//少于一个成员直接返回
if(arr.length<=1){
return arr;
}
//获取中间数的索引值
var num = Math.floor(arr.length/2);
//获取中间数值
var value = arr.splice(num,1);
var left=[];//小于中间数的数组
var right=[];//大于中间数的数组
for(var i=0;i<arr.length;i++){
if(arr[i]<value){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//将左右两边的容器递归比较,并将结果与中间值拼接在一起
return quicklySort(left).concat(value,quicklySort(right));
}
(11) ['1','2','3'].map(parseInt)的执行结果是多少?
[1,NaN,NaN];
分析:parseInt(val,radix)需要两个参数;radix表示解析时用的基数(进制);
map(item,index,array) 对应的radix不合法导致解析失败
(12)输出什么?
function addToList(item, list) {
return list.push(item);
}
const result = addToList("apple", ["banana"]);
console.log(result);
输出:2 因为数组的push方法返回的数组的长度
(13)输出什么
const myLifeSummedUp = ["☕", "?", "?", "?"] for (let item in myLifeSummedUp) { console.log(item) } for (let item of myLifeSummedUp) { console.log(item) }
0
1
2
3
and "☕"
"?"
"?"
"?"
通过for-in
循环,我们可以遍历一个对象自有的、继承的、可枚举的、非Symbol的属性。 在数组中,可枚举属性是数组元素的“键”, 即它们的索引。
通过for-of
循环,我们可以迭代可迭代对象(包括 Array
,Map
,Set
,String
,arguments
等)。当我们迭代数组时,在每次迭代中,不同属性的值将被分配给变量item
(14)输出什么?
let newList = [1, 2, 3].push(4)
console.log(newList.push(5))
Error 因为push返回的是数组的长度 4 number类型没有push方法