ES5新增 数组,字符串,对象方法

数组新增方法

迭代方法:forEach() map() filter() some() every()

forEach()

// array.forEach(function (currentValue, index, arr));
// currentValue:数组当前项的值
// index: 数组当前项的索引
// arr:数组对象本身
var arr = [1, 2, 3];
arr.forEach(function(value, index, array) {
   console.log(value); // 1, 2, 3
   console.log(index); // 0, 1, 2
   console.log(array); // [1, 2, 3] [1, 2, 3] [1, 2, 3]
});

filter()

// arr.filter(function (currentValue, index, array));
// filter() 方法创建了一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组
// 它直接返回一个新的数组;
var newAarr = arr.filter(function (item, index) {
   return item > 1; 
});
console.log(newArr);

some()

// arr.some(function (currentValue, index, array){})
// some方法用于检测数组中的元素是否满足条件;返回的是一个布尔值
// 如果找到第一个满足条件的元素,则终止循环,不在继续查找
var flag = arr.some(function (item) {
    return item === 1;
})
console.log(flag);

数组构造函数方法 from

let lis = document.querySelectorAll('li')
// 伪数组转换为真正的数据
lis = Array.from(lis)
// 还可以用展开运算符实现
lis = [...lis]

数组查找方法 find

let arr = [1, 2, 3, 4, 5]
// 返回数组中符合条件的项, 但是只返回最近的一项
let val = arr.find(item => item > 3)

数组查找方法 findIndex

let arr = [1, 2, 3, 4, 5]
// 返回数组中符合条件的项的索引, 但是只返回最近的一项
let index = arr.findIndex(item => item > 3)

数组包含方法 includes

let arr = ['a', 'b', 'c']
// @param 查找的指, 起始索引
console.log(arr.includes('a', 1))

字符串新增方法

去除字符串的左右空格 trim

// trim() 会从一个字符串的两端删除空白返回一个新的字符串不影响原来的字符串
var str = '  andy  ';
var str1 = str.trim();
console.log(str1); // andy

查找某一个是否包含某个值 includes

let str = 'abcdefg'
console.log(str.includes('a'), 1)

字符串开头接口是否包含某个值 startsWith endsWith

let str = 'abcdefg'
// @param 包含的字符, 开始查找的索引
console.log(str.startsWith('abcd', 1))
// index 为 1 的后面的是否为 b
console.log(str.endsWith('b'), 1)

字符串重复n次 repeat

let str = 'a'
console.log(str.repeat(2))

对象方法

Object.keys()

// 用于获取对象自身的所有属性;效果类似于for in,返回一个由属性名组成的数组
var obj = {name: 'zs', age: 23}
var arr = Object.keys(obj); // ["name", "age"]

对象合并 Object.assign

let obj = {a: 1, b: 2}
let obj2 = {c: 3, d: 4}
// @param 目标对象, 
// @param 要合并到目标对象的对象可以是多个
Object.assign(obj2, obj)
// 后面的两个对象合并的第一个空对象
var newObj = Object.assign({}, obj2, obj)
// 当然也可以使用展开运算符
let obj2 = {
  ...obj,
  name: 'zs',
  age: 14
}

是否全等 is

// 和全等基本一样, 不同的是 全等比较 +0 -0 true 这个是 false; 全等比较 NaN, NaN false 这个是 true
console.log(Object.is('1', 1)) // true

Object.definePropetry()

// Object.definePropetry(obj, prop, descriptor);
// obj:必须 目标对象
// prop: 必须 需定义或修改的属性的名字
// descriptor: 必须 目标属性所拥有的特性 传入一个对象
// value: 设置属性值,默认是undefined
// writable:值是否可以被重写, 默认false 不可以
// enumerable: 目标属性是否可以被枚举, 默认fasle
// configurable:目标属性是否可以删除或是否可以再次修改特性,默认false
bject.defineProperty(obj, 'age', {
  value: 24
});
Object.defineProperty(obj, 'id', {
  value: 1,
  writable: false, // 不允许被修改
  enumerable: true
})
Object.defineProperty(obj, 'address', {
  value: 'china',
  writable: false,
  enumerable: true, // 是否可以被循环
  configurable: false, // 不允许删除这个属性
})
obj.id = 2;
delete obj.address;
console.log(Object.keys(obj));
posted @ 2020-04-10 23:08  计算机相关人员  阅读(245)  评论(0)    收藏  举报