zoukankan      html  css  js  c++  java
  • 数组中的filter函数,递归以及一些应用。

    当我们用一个东西时候我们必须知道的是?why---where----how---when。一个东西我们为什么用?在哪用?怎么用?何时用?而不是被动的去接受一些东西。用在js里边我觉得也会试用。一直追求源生js,虽然也都背过好多东西,但是随着时间的流逝,工作的繁忙都忘了,有时甚至一点印象都没有,这让我开始思考我的学习方法了已经思维方式了。我们要记得不是简单的那个单词然后开始联想这个单词有什么用?一定是我要做什么事情?然后联想到谁可以做。带有目的性的学习。

    现在有十个人(也就是数组)需要我们把属虎的人给跳出来。我们该怎么做?一定是一个一个问。你属虎吗?他要回答是。那么拉到一边。如果不是 ,忽略继续下一个。最终得到的就是一个属虎的人组成的队列(数组)。那么js中的filter就是做的类似的功能。判断一个数组中满足一定条件的元素并且返回这些元素组成的数组。

    来看个例子,有一个数据 

     1 var data = [
     2   {
     3     id: 1,
     4     name: 'a',
     5     children:[
     6       {
     7         id: 2,
     8         name:'b',
     9         children:[
    10           {
    11             id:3,
    12             name:'c'
    13           }
    14         ]
    15       }
    16     ]
    17   }
    ]

    现在让我取得data中id为3的数据。怎么做?这个问题涉及到了递归问题。什么叫递归?就是满足一定的条件就做重复的动作。

    那么让我们来写个函数来实现这个功能

    function getItem (data,id){
      let result;
      result = data.filter (function (item){
        return item.id === id
      })
      if (data.children){
        result = result.concat(getItem(data.children,id))
      }
      return result
    }

    1:我们什么时候递归,一定是这个 item含有children的时候。那么重复的动作是什么?就是遍历数组,一个一个进行判断是否id为3.。这样我们就完成了这个功能,当然这个功能还不完美,没做 数据类型限制等等。可能写得还不好。。。但是希望思路能够有点用。

  • 相关阅读:
    ubuntu-18.04自动配置脚本
    Nodejs on windows 10
    终端接收FFMEPG推送的流出现音频卡顿问题
    FFMPEG 4.0 版本 支持PSI设置
    FFMPEG 支持https协议
    FFmpeg修改AC3编码的描述子
    FFMPEG 设置socket缓冲区
    将 h264 格式转换为YUV数据
    将 YUV 数据 编码为 h.264 格式
    将 PCM 数据编码为AAC格式
  • 原文地址:https://www.cnblogs.com/hjdjs/p/7815354.html
Copyright © 2011-2022 走看看