前端常见的js数组操作面试题集合
一、按要求分割数组
//实例: 将 “刘备,张飞,关羽” 一个字符串数组以“|”分割的形式,输出为 “刘备|张飞|关羽” 注:使用两种方式实现
(1) for循环累加方法
var arr1 = ["刘备","张飞","关羽"];
var separator = "|";
//通过for循环累加
var str = arr1[0];
for(var i=1;i<arr1.length;i++){
str += separator+arr1[i];
}
console.log(str); //返回值为: 刘备|张飞|关羽
(2) join()可以把数组中的元素链接成字符串
var arr2 = ["刘备","张飞","关羽"];
console.log(arr2.join("|")); // 返回值为: 刘备|张飞|关羽
二、反向输出数组
//实例: 将一个字符串数组 ["a", "b", "c", "d"] 反转为 [ "d","c","b","a"] 注:使用两种种方式实现
(1) 直接使用 reverse()数组函数
var arr1 = ["a", "b", "c", "d"];
console.log(arr1.reverse()); // 返回值为:["d", "c", "b", "a"]
(2)正向遍历,反向添加
var arr2 = ["a", "b", "c", "d"];
for(var i=0;i<arr2.length/2;i++){
var temp = arr2[i];
arr2[i] = arr2[arr2.length-1-i];
arr2[arr2.length-1-i] = temp;
}
console.log(arr2); // 返回值为:["d", "c", "b", "a"]
三、去掉数组中不符合要求的元素
//实例: 在工资数组 [1500, 1200, 2000, 2100, 1800] ,把工资超过2000的删除 输出新数组
var arr = [1500, 1200, 2000, 2100, 1800];
//步骤: 1.利用filter()形成一个数组;2.return true;3.组成的数组;
var newArr = arr.filter(function (ele, i, array) {
//2000以上返回false;
if(ele<2000){
return true;
}else{
return false;
}
});
console.log(newArr); // 返回值为: [1500, 1200, 1800]
四、找到某个元素在数组中的下标值
//实例: 在数组中["c", "a", "z", "a", "x", "a"]找到数组中每一个“a”元素出现的位置
var arr = ["c", "a", "z", "a", "x", "a"];
//遍历数组(for/while/do...while) forEach();
arr.forEach(function (ele, index, array) {
//如果元素等于“a”,那么就输出索引值;
if("a" === ele){
console.log(index); // 返回值: 1 3 5
}
});
五、数组去重
//实例: 编写一个方法去掉一个数组的重复元素
var arr = ["鸣人","小樱","佐助","佐助","鸣人","小樱"];
//思路:1.定义一个新数组,2.遍历老数组,3.判断,如果新数组里面没有老数组的元素就添加,否则就不添加
var newArr = [];
//遍历老数组
arr.forEach( function (ele,index,array) {
//检测老数组中的元素,如果新数组中存在就不添加了,不存在才添加;
if( newArr.indexOf(ele) === -1){ //不存在就添加;(去新数组中查找元素索引值,如果为-1就是没有)
newArr.push(ele);
}
});
console.log(newArr); // 返回值为: ["鸣人", "佐助", "小樱"]