数组和对象的扩展
一.数组的扩展
1.Array.from()方法用于将对象转为真正的数组(类数组转数组) - Array.isArray
1.1.对象转换成数组,需要两个条件
第一个条件:对象的属性名必须是数字格式的字符串。
第二个条件:对象必须有一个length属性。
// const obj = {
// name1: ‘zhangsan’,
// name2: ‘lisi’,
// name3: ‘wangwu’
// };
// console.log(Array.from(obj)); //[] 可以转数组,但没有值。
// const obj = {
// 0: ‘zhangsan’,
// 1: ‘lisi’,
// 2: ‘wangwu’,
// length: 3
// };
// console.log(Array.from(obj)); //[‘zhangsan’, ‘lisi’, ‘wangwu’]
1.2.类数组转换成真正的数组。
扩展运算符可以。
// let str = ‘hello’;
// str = Array.from(str); //类数组转换成真正的数组。
// str.push(‘hehe’);
// console.log(str); //[‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘hehe’]
2.fill(填充的内容,start,end):填充内容
后面的参数表示填充的起始索引位置和结束的索引位置,不包括结束位置。
// let arr = [1, 2, 3, 4, 5];
// console.log(arr.fill(‘hehe’)); //[‘hehe’, ‘hehe’, ‘hehe’, ‘hehe’, ‘hehe’]
// console.log(arr.fill(‘hehe’, 0, 2)); //[‘hehe’, ‘hehe’, 3, 4, 5] 后面的参数表示填充的起始索引位置和结束的索引位置,不包括结束位置。
3.find(function(数组项,数组项的索引)):函数做参数,遍历数组项,函数内的参数为数组项的值,数组项的索引
// let arr = [‘zhangsan’, ‘lisi’, ‘wangwu’];
// arr.find(function(a, b) {
// console.log(a,b);
// });
4.findIndex(function(数组项,数字项的索引,数组本身):函数做参数,输出对应的值,索引,数组本身
// let arr = [‘zhangsan’, ‘lisi’, ‘wangwu’];
// arr.findIndex((a, b, c) => {
// console.log(a, b, c);
// });
二.对象的扩展
1.对象的简洁表示法 - 两点改变 - 重点
第一点:如果对象的属性名和属性值名称一样,写一个即可。 第二点:对象里面的方法依然可以省略function// let a = ‘zhangsan’;
// const obj = {
// a: a, //后面的a是上面的变量,前面的a是自定义的属性名,是一个字符串
// b: function() {
// console.log(this.a); //zhangsan
// }
// }
简写
// const obj = {
// a,
// b() {
// console.log(this.a); //zhangsan
// }
// };
// console.log(obj.a); //zhangsan
// obj.b(); //zhangsan
2.对象扩展的方法
2.1.Object.assign()用于对象的合并,将源对象的所有可枚举属性,复制到目标对象。
方法允许添加多个对象作为参数,后面的对象里面的属性合并到第一个参数位置上。
如果属性名相同,后面覆盖前面的。
const obj2 = {
c:4,
d:5,
e:6,
};
const obj3 = {
d:7,
e:8,
f:9
};
const obj = {};
console.log(Object.assign(obj, obj1, obj2, obj3)); //{a:1,b:2,c:4,d:7,e:8,f:9}
2.2.Object.keys()获取对象所有的key(属性)集合,返回一个数组。
console.log(Object.keys(obj)); // [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
2.3.Object.values()获取对象所有的value(属性值)集合,返回一个数组。
console.log(Object.values(obj)); // [1, 2, 4, 7, 8, 9]
console.log(Object.entries(obj)); //返回二维数组,将key和value当作数组,插入其中。