数组拍平

  1. let flatten=function(arr){
  2. let res=[]
  3. for(let i=0;i<arr.length;i++){
  4. if(Array.isArray(arr[i])){
  5. res=res.concat(flatten(arr[i]))
  6. }else{
  7. res.push(arr[i])
  8. }
  9. }
  10. return res
  11. }
  12. console.log(flatten([1,[2,[3,[4,5]]]]));

环形链表找入口节点
两个无须数组合并为有序数组
找出数组中重复出现的元素
数组去重(4种)

  1. function unique1(arr) {
  2. for (let i = 0; i < arr.length; i++) {
  3. for (let j = i + 1; j < arr.length; j++) {
  4. if (arr[i] === arr[j]) {
  5. arr.splice(j, 1)
  6. j--
  7. }
  8. }
  9. }
  10. return arr
  11. }
  12. function unique2(arr) {
  13. let rs = arr.reduce((accumulator, current) => {
  14. return accumulator.includes(current) ? accumulator : accumulator.concat(current);
  15. }, []);
  16. return rs
  17. }
  18. let arr = [1, 2, 3, 34, 2, 2, 3, 3, 4]
  19. // let rs1 = unique1(arr)
  20. let rs2 = unique2(arr)
  21. console.log(rs2);
  22. // let rs2 = arr.filter((item, index, arr) => arr.indexOf(item) === index)
  23. // let rs3 = [...new Set(arr)];

去除字符串首尾空格

  1. // 去除字符串首尾空格
  2. function myTrim1(str){
  3. return str.replace(/^\s+|\s+$/g,'')
  4. }
  5. function myTrim2(str){
  6. let head=0
  7. let foot=str.length
  8. for(let i=0;i<str.length;i++){
  9. if(str[i]===' ') head++
  10. else break
  11. }
  12. for(let j=str.length-1;j>0;j--){
  13. if(str[j]==' ') foot--
  14. else break
  15. }
  16. return str.substr(head,foot-head)
  17. }
  18. str=" text "
  19. console.log(myTrim2(str));