数组对象和字符串对象的使用
1.数组对象
1.1数组类型检测
数组类型检测有两种常用方式:分别是使用instanceof运算符和使用**Array.isArray()**方法。
示例代码:
var arr = [];
var obj = {};
//第一种方式
console.log(arr instanceof Array);//输出结果:true
console.log(obj instanceof Array);//输出结果:false
//第二种方式
console.log(Array.isArray(arr));//输出结果:true
console.log(Array.isArray(obj));//输出结果:false
如果监测结果为true,表示给定的变量是一个数组,如果监测结果为false,表示给定的变量不是一个数组。
1.2添加或删除数组元素
JavaScript数组对象提供了添加或删除元素的方法,可以实现在数组的末尾或开头添加新的数组元素,或在数组的末尾或开头移开数组元素。方法如下:
方法名 | 功能描述 | 返回值 |
---|---|---|
push(参数1…) | 数组末尾添加一个或多个元素,会修改原数组 | 返回数组的新长度 |
unshift(参数1…) | 数组开头添加一个或多个元素(把数组长度-1,无参数),会修改原数组 | 返回数组的新长度 |
pop() | 删除数组的最后一个元素,若是空数组则返回undefined,会修改原数组 | 返回删除的元素的值 |
shift() | 删除数组的第一个元素,若是空数组则返回undefined,会修改原数组 | 返回第一个元素的值 |
示例代码:
//push
var arr = ['pink','black','white','yellow'];
cosole.log(arr.push('red'));//返回的是数组长度 输出结果为:5
console.log(arr);// 修改了原来的数组 输出结果['pink','black','white','yellow','red']
//unshift
var arr = ['pink','black','white','yellow'];
console.log(arr.unshift('red','blue'));返回的是数组长度 输出结果为:6
console.log(arr);修改了原来的数组 输出结果
['red','blue','pink','black','white','yellow']
//pop
var arr = ['pink', 'black', 'white', 'yellow']
console.log(arr.pop());// 返回的是删除的元素 输出结果为:yellow
console.log(arr);// 修改了原来的数组 输出结果为['pink', 'black', 'white']
//shift
var arr = ['pink', 'black', 'white', 'yellow']
console.log(arr.shift());// 返回的是删除的元素(第一个) 输出结果为:pink
console.log(arr);// 修改了原来的数组 输出结果为['pink', 'black', 'white']
注意:
- push()和unshift()方法的返回值是新数组的长度,而pop()和shift()方法返回的是移出的数组元素。
1.3[案例]筛选数组
案例需求:要求在包含工资的数组中,剔除工资达到2000或以上的数据,把小于2000的数重新放
到新的数组里面。
var arr = [1500, 1200, 2000, 2100, 1800];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < 2000) {
newArr.push(arr[i]);// 相当于:newArr[newArr.length] = arr[i];
}
}
console.log(newArr);
1.4数组排序
JavaScript数组对象提供了数组排序的方法,可以实现数组元素排序或者颠倒数组元素的顺序等。
排序方法如下:
方法 | 功能描述 |
---|---|
reverse() | 颠倒数组中元素的位置,该方法会改变原数组,返回新数组 |
sort() | 对数组的元素进行排序,该方法会改变原数组,返回新数组 |
示例代码:
reverse
// reverse
var arr = ['red', 'blue', 'green']
console.log(arr.reverse());//输出的结果为:['green', 'blue', 'red']
console.log(arr);// 改变原数组['green', 'blue', 'red']
sort有两种情况:
1.不传参数
2.传参数:参数是用来指定按某种顺序进行排列的函数
即 a 和 b 是两个将要被比较的元素
// sort: 如果调用该方法时没有使用参数,按照字符编码的顺序进行排序。
var arr1 = [1, 4, 5, 6, 73, 32, 22, 15];
// 不传参数的情况
console.log(arr1.sort());//输出的结果为:[1, 15, 22, 32, 4, 5, 6, 73]
// 传参数:参数是用来指定按某种顺序进行排列的函数
/*
即 a 和 b 是两个将要被比较的元素:
*/
arr1.sort(function (a, b) {
// return b - a;//降序 // [73, 32, 22, 15, 6, 5, 4, 1]
return a - b;//升序 // [1, 4, 5, 6, 15, 22, 32, 73]
})
console.log(arr1);
注意:
需要注意的是:reverse()和sort()方法的返回值是排序后的数组
sort 如果调用该方法时没有使用参数,按照字符编码的顺序进行排序。
1.5数组索引
在开发中,若要查找指定的元素在数组中的位置,可以利用Array对象提供的检索方法。检索方法
如下:
方法 | 功能描述 |
---|---|
indexOf() | 返回在数组中可以找到给定值的第一个索引,如果不存在,则返回-1 |
lastIndexOf() | 返回指定元素在数组中的最后一个的索引,如果不存在则返回-1 |