JavaScript 中的对象分为3种:
- 自定义对象,
var obj = {}
- 内置对象,
Math, Date,
Array、String等 - 浏览器对象
BOM
前面两种对象是JS 基础 内容,属于 ECMAScript;
第三个浏览器对象BOM Web API 讲解
创建数组的两种方式
① 字面量方式:
var arr = [1,"test",true];
②new Array() 方式 :(少用构造数组的方式创建数组!)
var arr = new Array();
注意:上面代码中arr创建出的是一个空数组,如果需要使用构造函数Array创建非空数组,可以在创建数组时传入参数
var arr2 = new Array(2) //创建一个长度为2的数组,里面为empty [empty × 2]
console.log(arr2);
var arr3 = new Array(2,3) //创建一个数组===>[2,3]
console.log(arr3);
检测是否为数组
① instanceof 运算符
语法:A instanceof B : 判断A是否是B的一个实例(对象)
var arr = [1, 23];
var obj = {};
console.log(arr instanceof Array); // true,arr是不是Array的实例?是的
console.log(obj instanceof Array); // false,obj是不是Array的实例?不是
② Array.isArray()
var arr = [1, 23];
var obj = {};
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
instanceof 和 typeof 区别
- typeof用于检查数据是否为简单数据类型和object(没有办法检测object的具体分类)
- instanceof 用于没某个对象是否为某个类发实例(某个构造函数创建出来的),用于检测具体是哪一类对象:object, Array
③Object.prototype.toString.call(data)
var arr = [1,2,3] var obj = {}
var fn = function(){}
var str = '123'
var num = 123
var bool = true
var a = undefined
var b = null
console.log(Object.prototype.toString.call(arr)) // [object Array] console.log(Object.prototype.toString.call(obj)) // [object Object] console.log(Object.prototype.toString.call(fn)) // [object Function] console.log(Object.prototype.toString.call(str)) // [object String] console.log(Object.prototype.toString.call(num)) // [object Number] console.log(Object.prototype.toString.call(bool)) // [object Boolean] console.log(Object.prototype.toString.call(a)) // [object Undefined] console.log(Object.prototype.toString.call(b)) // [object Null]
添加删除数组元素的方法
案例--筛选数组
有一个包含工资的数组[1500, 1200, 2000, 2100, 1800],要求把数组中工资超过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 ] )
}
}
console.log(newArr)
数组排序
// 数组排序
// 1. 翻转数组
var arr = ['pink', 'red', 'blue'];
arr.reverse();
console.log(arr);
// 2. 数组排序(冒泡排序)
//注意:sort方法需要传入参数来设置升序、降序排序 (sort排序用减号,a前b后是升序,a后b前是降序)
//如果传入“function(a,b){ return a-b;}”,则为升序
//如果传入“function(a,b){ return b-a;}”,则为降序
var arr1 = [13, 4, 77, 1, 7];
arr1.sort(function(a, b) {
// return a - b; 升序的顺序排列
return b - a; // 降序的顺序排列
});
新增写法:
arr1.sort( ( a, b) => a - b )
数组索引方法
// var arr = ['red', 'green', 'blue', 'pink', 'blue'];
var arr = ['red', 'green', 'pink'];
console.log(arr.indexOf('blue'));
console.log(arr.indexOf('yellow'));
// 返回数组元素索引号方法 lastIndexOf(数组元素) 作用就是返回该数组元素的索引号 从后面开始查找
var arr = ['red', 'green', 'blue', 'pink', 'blue'];
console.log(arr.lastIndexOf('blue')); // 4
案例: 数组去重
目标: 把旧数组里不重复的元素选取出来放到新数组中, 重复的元素只保留一个到新数组中
arr = [1, 3, 5, 7, 9, 3, 1, 2, 5, 4, 7, 8, 9, 4]
var arr = [1, 3, 5, 7, 9, 3, 1, 2, 5, 4, 7, 8, 9, 4]
var newArr = [ ]
for (var i = 0; i < arr.length; i++) {
if (arr[ i ] !== -1) {
newArr.push(arr[ i ])
}
}
console.log(newArr);
数组转换为字符串
// 数组转换为字符串
// 1. toString() 将我们的数组转换为字符串
var arr = [1, 2, 3];
console.log(arr.toString()); // 1,2,3
// 2. join(分隔符)
var arr1 = ['green', 'blue', 'pink'];
console.log(arr1.join()); // green,blue,pink (如果不指定分隔符,那么与toString一致,以逗号分隔)
console.log(arr1.join('-')); // green-blue-pink
console.log(arr1.join('&')); // green&blue&pink