30秒js練習(數組篇) 更新中。。。

#all數組

判斷集合中的數據是否都知足某個條件,而後作數據處理。函數

const all = (arr, fn = Boolean) => arr.every(fn);

all([4, 2, 3], x => x > 1); // true
all([1, 2, 3]); // true

#allEqualspa

判斷數組裏的數據是否都和第一個元素相同code

const allEqual = arr => arr.every(val => val === arr[0]);

allEqual([1, 2, 3, 4, 5, 6]); // false
allEqual([1, 1, 1, 1]); // true

#anyblog

若是提供的謂詞函數對集合中的至少一個元素返回true,則返回true,不然返回false。字符串

const any = (arr, fn = Boolean) => arr.some(fn);

any([0, 1, 2, 0], x => x >= 2); // true
any([0, 0, 1, 0]); // true

 #arrayToCSVit

將2維(2d)數組轉換爲逗號分隔值CSV類型字符串。ast

const arrayToCSV = (arr, delimiter = ',') =>
  arr
    .map(v => v.map(x => (isNaN(x) ? `"${x.replace(/"/g, '""')}"` : x)).join(delimiter))
    .join('\n');

arrayToCSV([['a', 'b'], ['c', 'd']]); // '"a","b"\n"c","d"'
arrayToCSV([['a', 'b'], ['c', 'd']], ';'); // '"a";"b"\n"c";"d"'
arrayToCSV([['a', '"b" great'], ['c', 3.1415]]); // '"a","""b"" great"\n"c",3.1415'

#bifurcateclass

將值分紅兩組。若是filter中的元素爲true,則集合中對應的元素屬於第一組;不然,它屬於第二組。配置

 #findLast

返回經過filter過濾的最後一個元素。

const findLast = (arr, fn) => arr.filter(fn).pop();

findLast([1,2,3,4], n => n%2 === 1) //3

 

#  flatten

自定義配置數組扁平化的程度

const flatten = (arr, depth = 1) =>
  arr.reduce((a, v) => a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v), []);

flatten([1, [2], 3, 4]); // [1, 2, 3, 4]
flatten([1, [2, [3, [4, 5], 6], 7], 8], 2); // [1, 2, 3, [4, 5], 6, 7, 8]
相關文章
相關標籤/搜索