这里是你可能会用到的算法

305 阅读1分钟

找出数组中字符长度最长的字符

//创建数组
var stringArr = ['hi', 'i', 'am', 'hahaha', 'hehe']

法一:遍历数组

 //记录最长的字符的长度和索引的对象,初始化长度和索引是0
 var longest = {  
     len: 0, 
     in: 0
    };
stringArr.forEach((item, index) => {
    if (item.length > longest.len) {
      longest.len = item.length
      longest.in = index
    }
})
console.log('len:', longest.len)
console.log('str:', stringArr[longest.in])

法二:数组的sort()方法

stringArr.sort((s1, s2) => {
      return s1.length - s2.length;
})
let longeststr = stringArr.pop();
console.log('str:', longeststr) 

法三:数组的reduce()方法

var strr = stringArr.reduce((pre, cur) => {
    return cur.length > pre.length ? cur : pre
})
console.log(strr, strr.length)

数组去重

法一: 循环遍历

const unique = []
function uniqueFunc(arr) {
    for (const i = 0;i<arr.length;i++) {
        if(unique.indexOf(arr[i] === -1) { // 如果目标数组中不存在当前循环的元素,则将当前元素放入目标数组
            unique.push(arr[i])
        }
    }
}

法二:数组下标判断

function uniqueFunc(arr) {
    const unq = []
    for(const i=0;i<arr.length;i++) {
        if(arr[i].indexOf(arr[i] === i)) { // 如果在数组中查找当前循环元素的下标等于当前循环的i,则将元素放入目标数组中
            unq.push(arr[i])
        }
    }
}

法三: 排序相邻去除

function uniqueFunc(arr) {
    arr.sort((a,b) => (a - b))先将数组进行排序
    const unique = [arr[0]]
    for(const i=0=1;i<arr.length;i++){
        if(arr[i] !== arr[i - 1]) {
            unique.push(arr[i])
        }
    }
    return unique
}

法四:es6 set()

set() 是es6新增加的一种叫做集合的数据结构,类似于数组,成员是唯一的
const unique = new Set(arr) // 这里得到是一个类似数组,需要转为真数组
const res = [...unique] // 转为真数组