最近看到很多面试题都涉及到了数组的方法,今天就简单总结一下
1,数组本身的方法:
<script>
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// 1. arr.join() 把数组转化为字符串 join("写字符之间的连接符号")
console.log(arr.join("-"));
// 2. arr.push() 在数组末尾处添加元素 返回修改后的数组长度
console.log(arr.push(10));// 10
console.log(arr);//[1, 2, 3, 4, 5, 6, 7, 8, 9,10]
// 3. arr.pop() 移除数组的最后一项 返回移除的值
console.log(arr.pop());//10
console.log(arr.length);//9
// 4. arr.shift()删除数组的第一项 并返回删除的值
// 5.arr.unshift() 在数组第一项添加元素 并返回数组的长度 arr.length
// 6. arr.sort()将数组的项从小到大排序 改变原数组
var newArr = [2,3,6,4,5,1]
console.log(newArr.sort());//[1, 2, 3, 4, 5, 6]
console.log(newArr);//[1, 2, 3, 4, 5, 6]
// 7. arr.reverse() 翻转数组 改变原数组
// console.log(arr.reverse());
//8.concat() 在数组的末尾添加元素
console.log(arr.concat(10,11,12));//[9, 8, 7, 6, 5, 4, 3, 2, 1, 10, 11, 12]
//9.slice截取数组元素
// arr.slice(start,end) 不改变原数组
// 2是从第二个开始截取 不包括2 -3是截取到倒数第三个
var newArr = arr.slice(2,-3)
console.log(newArr);
// 10.splice截取 插入 替换
// splice 改变原数组
var Arr = arr.splice(0,1)
console.log(Arr);
console.log(arr)
// 向数组插入元素
// 9从第九项插入 0是删除0个 10是插入的数据
arr.splice(9,0,10)
console.log(arr);
// 替换数组元素
// 0是从第一个开始替换 2是替换掉前两个元素 2是替换为2
arr.splice(0,2,2)
console.log(arr + '-----------')
// 11.arr.indexOf()接收两个参数:要查找的项和(可选的)表示查找起点位置的索引 返回的是索引号 没有返回 -1
console.log(arr.indexOf(4,0));//3
console.log(arr.indexOf(3,3));//-1
// 12. arr.forEach() 对数组进行遍历循环 参数是函数 没有返回值
// console.log(arr.forEach()); 报错
arr.forEach(function(x,index){
console.log(x +'|' + index);
})
// 13. arr.some()判断数组中是否存在满足条件的项,只要有一项满足就返回true
var Arr = [1,2,3,4,5];
var arr2 = arr.some(function(x){
return x<3;
});
console.log(arr2);//true
var arr3 = arr.some(function(x){
return x < 1;
})
console.log(arr3);//false
</script>
2.用js for循环实现的数组方法
<script>
// 数组求和 平均值
var arr = [1, 2, 3, 4, 5, 6, 7];
var sum = 0;
var he = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
pj = sum / arr.length;
console.log(sum);
console.log(pj);
</script>
<script>
//查找数组的最大值
arr=[1,2,3,4,5,5,6];
var max = 0;
for(i=0;i<arr.length;i++){
// if(arr[i+1] > arr[i]){
// max = arr[i+1]
// }
if(max < arr[i]){
max = arr[i]
}
}
console.log(max)
</script>
<script>
//把数组转化为字符串
var arr = ['red', 'green', 'blue', 'pink'];
var str = 1;
var sep = '*';
for (var i = 0; i < arr.length; i++) {
str += arr[i] + sep;
str = str + ''
}
arr = ['skyblue']
console.log(arr)
// console.log(str);
// console.log(typeof(str))
</script>
<script>
//反转数组
var arr = [1,2,3,4,5,6,7];
var newArr = [];
var j = 0;
for(var i = 1;i<=arr.length;i++){
newArr[j] = arr[arr.length-i]
j++;
}
console.log(newArr)
</script>
<script>
//冒泡排序
var arr = [2,5,3,6,2,8,4,7,1];
var newArr = [];
var k =0;
for(var i = 0; i<arr.length-1;i++){
for(var j=0;j<=arr.length-i-1;j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j+1] = temp;
}
}
if(newArr.indexOf(arr[i]) === -1){
newArr[k] = arr[i]
k++;
}
}
console.log(arr)
console.log(newArr);
</script>