• JavaScript中Array


    一,针对于数组

    const arr = ['a','b','c','d'];

    Array.indexOf  将“返回第一次出现给定元素的索引”;

    console.log(arr.indexOf('b')); // 1

    Array.includes 只想知道数组是否包含某个值;布尔值

    console.log(arr.includes('c')); // true

    二,针对于数组对象

    const objArr = [
      { id: 1, name: 'a' },
      { id: 2, name: 'b' },
      { id: 3, name: 'c' },
      { id: 4, name: 'd' },
      { id: 5, name: 'b' },
    ]
    function getObj (name) {
      return objArr => objArr.name===name;
    }

    Array.filter  返回一个新的数组,过滤,它接受一个回调函数作为参数,基于一个包含所有元素的数组创建出一个新的数组。遍历整个数组;

    console.log(objArr.filter(getObj('b')));
    // [{ id: 2, name: 'b' },{ id: 5, name: 'b' }]

    Array.find 返回一个元素值,只要找到第一个满足回调函数的元素,Array.find 就会停止,返回的是一个元素值,无需遍历整个数组;

    console.log(objArr.find(getObj('b')));
    // {id: 2, name: "b"}

    Array.some 返回所需的布尔值。另外,从语义上看,Array.some 表示我们只想知道某个元素是否存在,而不需要得到这个元素。

    console.log(objArr.some(getObj('b')));
    // true

    二,在数组对象中找到满足条件的对象,并对其累加新的属性值

    方法一:最直接,最简单,用 Array.reduce 

    // 回调函数
    function callbackReduce (x,y) {
      return y.name === 'b'
      ? x.concat(Object.assign({},y,{age:11}))
      : x
    }
    // reduce(回调函数,空数组)
    console.log(objArr.reduce(callbackReduce,[]))
    // [{id: 2, name: "b", age: 11},{id: 5, name: "b", age: 11}]

    方法二 :间接,需要Array.filter和Array.map一起用才能实现

    console.log(
      objArr
        .filter(x => x.name === 'b')
        .map(x => Object.assign({},x,{color:'red'}))
    )
    // [{ id: 2, name: "b", color: "red" }, { id: 5, name: "b", color: "red" }]
  • 相关阅读:
    angular学习的一些小笔记(中)之双向数据绑定
    angular学习的一些小笔记(中)之ng-init
    angular学习的一些小笔记(中)之directive
    原型函数
    哇 真的是一个好插件!!!Sublime Text编辑文件后快速刷新浏览器
    angular学习的一些小笔记(中)之表单验证
    letter-spacing
    Emit学习(2)
    Emit学习(1)
    redis漏洞攻击
  • 原文地址:https://www.cnblogs.com/wang715100018066/p/10416955.html
Copyright © 2020-2023  润新知