- 对象
- 引用数据类型
- 存储基本数据类型的集合
- 1.键值对 2.key/value 3.属性名:属性值
- 对象的操作
- 创建
var obj1 = {} console.log(obj1)<==字面量构造var obj2 = new Object() console.log(obj2)<==内置构造函数
- 操作
-
增
- 点语法:对象名.新的属性名 = 对应的属性值 :
obj.age = 18- 中括号语法:对象名['要新增的属性名'] = 对应的属性值 :obj['age'] = 18
- 点语法:对象名.新的属性名 = 对应的属性值 :
-
删
- 点语法:delete 对象名.要删除的属性名 :
delete obj.id - 中括号语法:delete 对象名['要删除的属性名'] :
delete obj['id']
- 点语法:delete 对象名.要删除的属性名 :
-
改
- 点语法:对象名.要修改属性值的属性名 = 新的属性值 :
obj.name = 'Mary' - 中括号语法:对象名['要修改的属性名'] = 新的属性值 :
obj['name'] = 'Lisa'
- 点语法:对象名.要修改属性值的属性名 = 新的属性值 :
-
查
- 点语法:对象名.要查询的属性名 :
console.log(obj.name) - 中括号语法:对象名['要查询的属性名'] :
console.log(obj['name'])
- 点语法:对象名.要查询的属性名 :
- 数组
- 创建
var arr1 = {} console.log(arr1)<== 字面量构造 ==> 使用场景较多var arr2 = new Array() console.log(arr2)<==内置构造函数
- 长度:length
- 数组的长度取决于内部有多少元素
- 下标
- 从0开始
- 常用算法
- 冒泡排序
js
复制代码
var a = [20, 17, 16, 4, 9, 3, 7];
for (var i = 0; i < a.length - 1; i++) {
for (var j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j + 1]) {
var temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
- 选择排序
js
复制代码
var a = [20, 17, 16, 4, 9, 3, 7];
for (var i = 0; i < a.length - 1; i++) {
var min = i;
for (var j = i + 1; j < a.length; j++) {
if (a[j] < a[min])
min = j;
}
var temp = a[i];
a[i] = a[min];
a[min] = temp;
}
console.log(a);
- 数组方法
js
复制代码
// 1.push 在数组后面追加元素,返回值是长度
console.log(arr.push(9));
console.log(arr)
//函数
function push(a, num) {
a[a.length] = num;
return a.length;
}
console.log(push(arr, 'we'));
console.log(arr)
js
复制代码
// 2.pop 在数组后面删除元素,返回删除的元素 返回值一般不用
console.log(arr.pop());
console.log(arr)
// 函数
function pop(a) {
var temp = a[a.length - 1]
//删除后值没了 长度不变
delete a[a.length - 1]
//位置变了 值变了
a.length -= 1
return temp;
}
console.log(pop(arr))
js
复制代码
//3.unshift 在数组前面追加元素,返回数组长度
console.log(arr.unshift(2));
console.log(arr)
// 函数
var a1 = [1, 2, 3]
function unshift(a, data) {
// 一个新的数组来存值
var b = [data];
for (var i = 0; i < a.length; i++) {
b[i + 1] = a[i]
}
return {
arr: b,
len: b.length
}
}
var r = unshift(a1, 'xixi')
console.log(r)
js
复制代码
// 4.shift 在数组前面删除元素 返回删除的元素
var a2 = [ 1, 2, 3]
console.log(a2.shift());
function shift(a) {
var temp = a[0]
for (var i = 0; i <= a.length - 1; i++)
a[i] = a[i + 1]
a.length -= 1
return temp
}
var r2 = shift(a2)
console.log(r2)
js
复制代码
// 5.reverse 反转数组,返回反转后的数组 会改变原数组
var arr3 = [1,2,3,4,5,6]
console.log(arr3.reverse())
function reverse(a) {
// 从头开始 到中间停止 前后交换
for (var i = 0; i < a.length / 2; i++) {
var temp = a[i]
a[i] = a[a.length - 1 - i]
a[a.length - 1 - i] = temp
}
return a
}
var r1 = reverse(arr3)
console.log(r1)
- 6.sort 排序 // 开发的时候,没有特别要求使用sort // 面试的时候不要一开始说sort
-
- 语法一:数组名.sort()
-
- 作用:将数组内的数据,转换为字符串,然后一位一位对比
-
- 语法二:
数组名.sort(function (a,b) { return a- b})
- 语法二:
-
- 作用:按照数字从小到大 * * 语法三:
数组名.sort(function (a,b) { return b - a})
- 作用:按照数字从小到大 * * 语法三:
-
- 作用:按照数字从大到小 * * 返回值:返回一个排序好的数组 */
js
复制代码
var arr4 = [12, 20, 30, 40, 50, 100]
// console.log(arr4.sort())
var so = arr4.sort(function (a,b) { return b - a})
console.log(so);
- 7.indexOf() 数组.indexOf(数据 )
- // 数组.indexOf(数据,从哪个下标开始()第二个参数不传,默认为0)
- 作用:从左到右的顺序,查找数组中是否包含这个数据 返回值:找到:返回从左到右第一次出现的下标 否则返回-1 */
js
复制代码
var a = [1, 2, 3, 4, 5, 6,1]
console.log(a.indexOf(2));
console.log(a.indexOf(7));
console.log(a.indexOf(5, 1));
console.log(a.indexOf(2, 7));
function indexOf(a, data, index = 0) {
for (var i = index; i < a.length; i++) {
if (a[i] === data)
return i
}
return -1
}
console.log(indexOf(a, 5,2))//4
console.log(indexOf(a, 1,2))//6
console.log(indexOf(a, 2,2))//-1
- 8.splice 剪切 or 删除
- 语法一 数组.splice(开始下标数,剪切数量)
js
复制代码
var arr = [1,2,3,4,5]
var res = arr.splice(1, 3)
console.log('剪切到'+res);
- 语法二:数组.splice(开始下标数,剪切数量,数据一,数据二,数据三...)
- 返回值:剪切到的内容
js
复制代码
var arr2 = ['jizhixing', 'guoenhui', 'wozuimei']
var res1 = arr2.splice(1, 1, 'dameinv', 'pianrende')//添加的
console.log(arr2)
console.log(res1)//返回删除的
arr2.splice(0, 0, 'qwertrytu')
console.log(arr2)
arr2.splice(5, 0, 'qasadfdgfd')
console.log(arr2)