数组拉平和find 的兼容实现

139 阅读1分钟
  • 使用数组的新方法flat,传入Infinity 实现无线嵌套
[1, [2, [{name: "love"}]]].flat(Infinity)
  • 如果不兼容就用reduce
function flatten(arr) {
    return arr.reduce((result, item) => {
        return result.concat(Array.isArray(item) ? flatten(item) : item);
    }, []);
}
  • 实现数组查找符合第一个规则的find 函数
Array.prototype.find = function (fn) {
    for (let i = 0; i < this.length; i++) {
        if (fn(this[i])) return this[i]
    }
}
console.log([1, [2, [{name: "love"}]]].flat(Infinity));