数组的some()方法,手写拍平数组

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。返回值为布尔类型

some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

var ages = [3, 10, 18, 20];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    document.getElementById("demo").innerHTML = ages.some(checkAdult);
}

输出结果为:

true

手写拍平数组

  <script>
    function flat(arr){
     while(arr.some(item => Array.isArray(item))){
      arr =  [].concat.apply([],arr);
     }
      return arr;
    }

    var arr = [1, 2, 4, [6, 7, [4, 5]]]
    const newarr = flat(arr)
    console.log(newarr)
  </script>
    //递归实现
    function flat(arr){
      var arr1 =[]
      arr.forEach((value) => {
        if(value instanceof Array){
          arr1 = arr1.concat(flat(value))
        }else {
          arr1.push(value)
        }
      })
      return arr1
    }

将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
Array.from(new Set(arr.flat(Infinity))).sort((a,b) => return{(a-b)})

posted @ 2021-04-13 11:10  嘿!那个姑娘  阅读(784)  评论(0编辑  收藏  举报