利用new Array() 创建数组元素
// var arr = new Array() //表示创建了一个新数组
// var arr = new Array(2); //这个2表示 这个数组的长度是2,里面有2个空元素
// var arr = new Array(2,3);//等价于[2,3] 这样写 表示里面有2个数组元素2和3
// console.log(arr);
// 检测是否为数组
//正常案例
function str(arr) {
var newArr = [];
for(i=arr.length-1;i>=0;i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
}
console.log(str([3,2,1]));
//如果传递回去的不是一个数组的话,就会原封不动的把newArr传递回来,所以这时候需要用Array.isArray() 来判断是否是数组 是数组就true 不是false
function str1(arr) {
if(Array.isArray(arr)){
var newArr = [];
for(i=arr.length-1;i>=0;i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
}else {
return '请传递一个数组'
}
}
console.log(str1(1,2,3));
添加删除数组元素
1.push() 在数组的末尾添加一个或者多个数组元素
push()中直接写数组元素就好,返回值是添加元素后数组的长度
var arr = [1,2,3];
arr.push('pink');
console.log(arr) //数组变成[1,2,3,'pink']
2.unshifl() 在数组的前面添加一个或多个数组元素
返回值和push()一样
var arr = [1,2,3];
arr.unshifl('pink');
console.log(arr) //数组变成['pink',1,2,3,'pink']
3.pop() 删除数组最后一个元素一次只能删除一个
中间是不写参数的,返回值是被删除的元素
arr.pop();
4.shifl() 删除数组第一个元素一次只删除一个
和上面一样
arr.shifl();
数组排序
1.reverse();翻转数组 不写参数
arr.reverse();
2.sort(); 冒泡排序,不写参数
arr.sort();
这里有个注意的地方,如果是双数以上的话(10以及以上的数字)这个排序就会出现一些问题,详细可看数据类型部分的拓展小知识
这时候可以这么写,至于原理,因为写法固定,记住就好
arr.sort(function(a,b) {
return a - b; //升序
return b - a; //降序
});
查找数组索引号
返回数组索引号方法 indexof(数组元素) 返回值是该数组元素的索引号 它只返回第一个满足条件的索引号 如果在数组中找不到该数组元素就返回-1
var arr = ['pin','red'];
console.log(arr.indexOf('red'));
// 数组去重(重点案例)
// 核心思路就是遍历旧数组,然后用新数组查询旧数组里的元素,如果等于-1就代表新数组中没有这个元素,添加进去,不等于-1就不用添加
function str(arr) {
var newarr = [];
for(i = 0;i<arr.length;i++) {
if(newarr.indexOf(arr[i]) === -1) {
newarr.push(arr[i]);
}
}
return newarr;
}
var re = str(['c','a','b','c','d','a']);
console.log(re);
数组转换成字符串
// 1.toString()
var arr = [1,2,3];
console.log(arr.toString()); //返回123;
// 2.join(间隔符);
var arr1 = ['red','pink','blue'];
console.log(arr1.join('-'));
// 课下查询
// 1.concat() 连接两个或多个数组 返回一个新数组
var arr = [1];
var arr1 = [2];
console.log(arr.concat(arr1));
// 2.splice() 数组删除splice(从第几个开始,要删除几个) 返回值是被删除元素的新数组 会影响原来的数组
var arr = [1,2,3,4,5,6,7,8];
console.log(arr.splice(3,2));//4,5
console.log(arr);//1,2,3,6,7,8
基本包装类型 String number Boolean这三种
var str = 'anst';
console.log(str.length);
//对象才有属性和方法 复杂数据类型
//简单数据类型为什么会有length属性呢?
//基本包装类型:就是把简单数据类型包装成复杂数据类型 下面就是js内部的操作
// (1)把简单数据类型包装成复杂数据类型
var temp = new String('anst');
// (2)把临时变量的值给str
str = temp;
// (3)销毁临时变量
temp = null;
课堂案例:
// 课堂案例:o出现的位置和次数
var str = 'abcoefoxyozzopp';
var index = str.indexOf('o');
var sum = 0;
while(index != -1) {
console.log(index);
index = str.indexOf('o',index+1);
sum++;
}
console.log(sum);
根据位置返回字符
// 1.charAt(索引号) 根据位置返回字符
var str = 'andr';
console.log(str.charAt(3));
// 2.charCodeAt(索引号) 获取指定位置处字符的ascii码 用来判断用户按了哪个箭
console.log(str.charCodeAt(0));//a =97
//3.str[索引号] h5新增
console.log(str[0]); //a
// 字符串操作
// 1.截取字符串
// substr(截取开始的问题,截取几个字符);
// var str1 = '川田来了春天来了';
// console.log(str1.substr(2,2));
// 2.替换字符 replace('被替换的的字符','替换的字符')
// var str = 'pbooo';
// console.log(str.replace('o','*'));
// // 3.字符转换为数组 split('分隔符')
// var str1 = 'red,pink,blue';
// console.log(str1.split(','));