JS高階関数--------マップ、減らす、フィルタ

A、フィルタ

フィルタリングのためのフィルタアレイ。
これは、すべての要素を修飾指定された配列を確認することで、配列に新たな要素の新しい配列を作成します。

注:  ()フィルタは、空のアレイ検出されません。

注:  フィルタ()は、元の配列を変更しません。

1.文法

 
Array.filter(関数(currentValueは、indedx、ARR)、thisValue)

最初のパラメータはの関数であり、

このコールバック関数の戻り値はブール値であり、

チェック要素がフィルタ条件を満たしたときにtrueを返します、内部関数は自動的にこの配列に新しい要素を追加します

条件がfalseを返します満たしていない場合は、内部関数は、この要素を除外します

実施例1:要素のアレイが100未満である返し

CONST NUMS = [10、20、50、101、222,40は
  newNumsせ = nums.filter(関数(N){
     戻り N <100 
  })
  はconsole.log(newNums)。// [10、20、50、40]

2:空間のスクリーニング

CONST ARR = [ '0'、1,2,3,4、 ""、5,1,4、 '0'、 "" ]。
  せarr_filter = arr.filter(関数(X){
     戻り X; / * 筛选空格* / 
  })
  はconsole.log(arr_filter)

例3:除去Array反復要素の

CONST arr_repeat = [ 'A'、 'B'、 'A'、 'B'、 'B'、 'C'、 'A'、 'D'、 'C'は
  arr_filterせ = arr_repeat.filter(関数(EL 、インデックス、自己){
 //     はconsole.log(self.indexOf(EL))
//     はconsole.log( 'インデックス'、インデックス)
    リターン self.indexOf(EL)== 指数

  })
console.log(arr_filter)// [ "A"、 "B"、 "C"、 "D"]

重複する要素が依存除去indexOf常に後続の反復要素の位置インデックスとの最初の発生の要素の位置を返しindexOf、それがされるように、不均等な位置復帰をfilter除外。

二、マップ

()メソッドをマッピング:指定されたメソッドを呼び出した後、元の配列の各要素は、新しい値が戻るの配列を返します。

CONST NUMS = [2、4、6、8、10 ] 
  newNums = nums.map(関数(N){
     戻り N * 2 
  })
  はconsole.log(newNums)

三、削減

配列の内容が集約されているすべての機能を低下させます。

reduce()この役割で機能するようにArrayある[x1, x2, x3...]のは、この関数は、2つのパラメータ、受信しなければならないreduce()結果とシーケンスの次の要素に続くの累計を行い、効果は次のとおりです。

[X1、X2、X3、X4] .reduce(F)= F(F(F(X1、X2)、X3)、X4)

構文

arr.reduce(コールバック、〔はinitialValue])

最初のパラメータは、コールバック関数であります

コールバック関数は、次の4つのパラメータを取ります

 

previousValue (第一项的值或者上一次叠加的结果值,或者是提供的初始值(initialValue))
currentValue (数组中当前被处理的元素)
index (当前元素在数组中的索引)
array (数组本身)
initialValue (作为第一次调用 callback 的第一个参数,可以控制返回值的格式)不传默认为0

例子1:数组求和

    const arr = [1, 2, 3, 4, 5]
    let sum = arr.reduce(function (pre, cur) {
        console.log(pre, cur) //输出的是第一项的值或上一次叠加的结果,正在被处理的元素
        return pre + cur
    })
    console.log(sum) //15
1 2
3 3
6 4
10 5
15

例子2:不要使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数 

思路:1.先把字符串13579先变成Array——[1, 3, 5, 7, 9]
2.再利用reduce()就可以写出一个把字符串转换为Number的函数。

 

    const s = '13579'
    function string2int(s) {
        let arr = s.split('').map(function(x){
            return +x;
        })
        console.log(arr) //[1, 3, 5, 7, 9]
        let arr_reduce = arr.reduce(function(prev,res){
            console.log(prev, res)
            return prev*10+res;
        })
        console.log(arr_reduce) //13579
        return arr_reduce

    }
    string2int(s)

 

1.split() 方法用于把一个字符串分割成字符串数组。
格式:

stringObject.split(separator,howmany)

separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。如果是空字符串”,按每个单词分割
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
2.parsenInt和+

js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。

在字符串前面输入‘+’也能将字符转化成数值,输出如下:

 1 3
 13 5
 135 7
 1357 9
 13579

例子3:求一串字符串中每个字母出现的次数

暂时不会


参考:

https://www.cnblogs.com/jianxian/p/10582683.html

https://blog.csdn.net/baidu_36065997/article/details/79079880



おすすめ

転載: www.cnblogs.com/lyt0207/p/12066575.html