数组与对象
关于数组
谈谈你对数组的认识?
-
什么是数组?
索引从0开始,并且存放相同结构的集合 是数组
-
为什么有数组?(数组解决了什么问题,也是数组的作用?
相同结构的数据 统一管理(处理)问题
-
数组有什么特点
1:由 索引和数组元素组成
2:有序的 与长度(长度表示数组有多少个元素,每个都有自己的位置编号)
3:数组元素可以为js任意类型的数据 -
索引作用:查找元素
-
长度的作用:记录数组有多少元素
数组的新增
-
var arr = [2, 3, 5, 7, 8];
1.从arr尾部加 ‘dundun’
arr[arr.length] = ‘dundun’
- 从arr头部加 ‘xuerongrong’
方法1
var arr_ = []; arr_[0] = 'xuerongrong'; for (var i = 0, len = arr.length; i < len; i++) { var count = i + 1; //将数据新增到 arr_中 arr_[count] = arr[i] }
思路:引进一个新数组,将新数组索引值为0的地方放上’xuerongrong’,引入一个变量count=i+1;也就是将原数组每一个索引往后移动一位后放进新数组.
方法2:换值
var arr = [2, 3, 5, 7, 8];
for (var i = arr.length; i >= 0; i--) {
arr[i] = arr[i - 1];
}
arr[0] = 'xuerongrong';
console.log(arr);
思路:重点在于length的长度,长度刚好等于索引值+1,可以让索引值被赋值到后一位
3.在第三个位置 加’bingdundun’
var val = 'bingdundun';
var old = [arr[3], arr[4]];
arr[3] = val;
for (var i = 0; i < old.length; i++) {
var count = 3 + i + 1;
arr[count] = old[i]
}
console.log(arr);
对象
对象的定义
-
对象: 用于表示不同意义的数据 对象: key - value 键值对 key 键 value 值 key 都是字符串 相当于变量 value 任意类型的js数据
-
循环读取所有key
var keyArr = [] var len = keyArr.length; for (var k in obj) { console.log(k); keyArr[len] = k; len++ } console.log(keyArr);
-
获取对象中的键
function keys(obj) { var res = []; var len = res.length; for (var k in obj) { res[len] = k; len++ } return res } var keysArr = keys(obj); console.log(keysArr);
-
获取对象中的值
function values() { var res = []; for (var k in obj) { var len = res.length; res[len] = obj[k]; } return res } var obj_val = values(obj)
数组的增删改
增
push() 从数组尾部新增元素
参数:被新增的元素
arr.push('dundun');//在后面加
arr.unshift('xuerongrong');//加在最前面
// arr.splice(index,count,addEL)//从哪里加;加几个;加的什么
arr.splice(1, 1, 'aaa');
concat() 数组合并
var test = [1, 3, 4]
arr = arr.concat(test)
删
从头
arr.shift()
从尾
arr.pop()
从某一个位置删除几个元素
arr.splice(1,1)
改
arr.splice(1, 1, '更改数据')
查询
var test = 'gaohangyang';
var res = arr.indexOf(test);
测试题
1 将数组变为对象
输入 var arr = [‘name’,‘fanzhen’,age,12]
输出: {name:‘fanzhen’,age:12}
-
var obj = {}; var arr = ['name', 'fanzhen', 'age', 12]; for (var i = 0; i < arr.length; i++) { if (i == 0 || i % 2 == 0) { key = arr[i]; } else { obj[key] = arr[i]; } } console.log(obj);
2: 过滤对象中为空字符的字段
输入:{name:’’,age:12}
输出:{age:12}
-
var obj = { name: '', age: 12 }; for (var key in obj) { if (obj[key] == '') { delete obj[key]; } } console.log(obj);
3: 封装一个数组变对象的函数
-
function objs(arr) { var obj = {}; for (var i = 0; i < arr.length; i++) { if (i == 0 || i % 2 == 0) { key = arr[i]; } else { obj[key] = arr[i]; } } return obj; } var res = objs([2, 3, 5, 6, 4]); console.log(res);
4: 封装一个过滤对象中空字符的函数
-
function objs(arr) { var obj = arr; for (var key in obj) { if (obj[key] == '') { delete obj[key]; } } return obj; } var obj1 = { name: '', age: 12 }; var res = objs(obj1) console.log(res);