ES6——新增方法



@[TOC](文章目录)

---

#### 一、数组方法
迭代(遍历)方法:forEach()、map()、filter()、some()、every()。

1. forEach()

```javascript
    array.forEach(function(currentValue, index, arr))
```

> 1. currentValue:数组当前项的值
> 2. index:数组当前项的索引
> 3. arr:数组对象本身

```javascript
    let arr = [1, 2, 3]
    let sum = 0
    arr.forEach(function(value, index, array){
        console.log('每个数组元素' + value)
        console.log('每个数组元素的索引号' + index)
        console.log('数组本身' + array)
        sum += value
    })
    console.log(sum)
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/05a410d35be14a808a087a6d8d167adf.png)
2. filter():创建一个新的数组,新数组中的元素是通过检查指定数值中符合条件的所有元素,主要用于筛选数组。

```javascript
    array.filter(function(currentValue, index, arr))
```

> 1. currentValue:数组当前项的值
> 2. index:数组当前项的索引
> 3. arr:数组对象本身

```javascript
    let arr = [1, 2, 3, 4, 5]
    let newArr = arr.filter(function(value, index){
        return value >= 3
    })
    console.log(newArr) //[3, 4, 5]
```
3. some():检测数组中的元素是否满足指定条件。即查找数组中是否有满足条件的元素。


```javascript
    array.some(function(currentValue, index, arr))
```

> 1. 返回一个布尔值,如果查找到了这个元素,就返回 true,没有找到就返回 false。
> 2. 如果找到了第一个满足条件的元素,则终止循环,不再继续查找。

```javascript
    let arr = [1, 2, 3, 4, 5]
    let flag = arr.some(function(value){
        return value >= 3
    })
    console.log(flag) //true
```
#### 二、Object.defineProperty()
1. Object.defineProperty():用来定义新属性或修改原有的属性。

```javascript
    Object.defineProperty(obj, prop, descriptor)
```

> 1. obj:必需。目标对象。
> 2. prop:必需。需定义或修改的属性的名字。
> 3. descriptor:必需。目标属性所拥有的特性。

> 第三个参数 descriptor 说明:以对象形式 `{}` 书写 
> 1. value:设置属性的值,默认为 undefined
> 2. writable:值是否可以重写。true | false 默认为 false。
> 3. enumerable:目标属性是否可以被枚举。true | false 默认为 false。
> 4. configurable:目标属性是否可以被删除或是否可以再次修改特性。true | false 默认为 false。

```javascript
    //原来对象添加和修改属性的方式
    let obj = {
        id: 1,
        pname: '小米',
        price: 1999
    }
    // 以前的对象添加和修改属性的方式
    obj.num = 1000
    obj.price = 999
    console.log(obj)
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/c050ac28021f46a9a89037e0a10feee8.png)

```javascript
    let obj = {
        id: 1,
        pname: '小米',
        price: 1999
    }
    // Object.defineProperty() 定义新属性或修改原有的属性
    Object.defineProperty(obj, 'num', {
        value: 1000,
        enumerable: true
    })
    console.log(obj)
    
    Object.defineProperty(obj, 'price', {
        value: 999
    })
    console.log(obj)
    
    Object.defineProperty(obj, 'id', {
        // 不允许修改这个属性值 默认值也为false
        writable: false
    })
    obj.id = 2
    console.log(obj)
    
    Object.defineProperty(obj, 'address', {
        value: '山东',
        // enumerable 如果为false 则不允许遍历 默认值为false
        enumerable: false,
        // configurable 如果为false 则不允许删除这个属性 默认为false
        configurable: false
    })
    console.log(obj)
    // address 设置了不可枚举 
    console.log(Object.keys(obj))
    // address 设置了不可删除
    delete obj.address
    console.log(obj)
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/051edd34023949e29fea2e551719de06.png)

#JavaScript#
全部评论
楼主厉害,讲解的这么详细啊
点赞 回复 分享
发布于 2022-08-24 20:05 陕西

相关推荐

06-13 12:13
已编辑
东北大学 射频工程师
26毕业的,日常实习还能找到吗
求实习的青提很想去大厂:目前应该还有hc吧,腾讯感觉还有hc,最近捞了我好几次,因为目前有offer,所以不准备面了,可以再找找,不行的话就找找中小厂试试,因为我之前也找了好久,准备放弃了,结果有个岗位流程特别顺利,然后就oc,只能说坚持下试试,万一呢💪
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务