有趣的题目 纯记录答案

104 阅读1分钟
const getMaxFrequencyChar = (str) => {
    const sortSrt = str.split("").sort().join("")
    const hashMap = {}
    let maxCount = 1
    let maxIndex = 0
    for (i = 0; i < sortSrt.length; i++) {
        if (hashMap[sortSrt[i]]) {
            hashMap[sortSrt[i]]++
            if (hashMap[sortSrt[i]] > maxCount) {
                maxCount = hashMap[sortSrt[i]]
                maxIndex = i
            }
        }
        else { hashMap[sortSrt[i]] = 1 }
    }
    return sortSrt[maxIndex]

}
console.log(getMaxFrequencyChar(`cadcaaafaffffffba`))
const transCamel = (str) => {
    const arrSrt = str.split("")
    for (i = 0; i < arrSrt.length; i++) {
        if (arrSrt[i] === '-') {
            arrSrt[i] = ""
            arrSrt[i + 1] = arrSrt[i + 1].toUpperCase()
        }
    }
    return arrSrt.join("")
}

console.log(transCamel('get-page-result'))

//差不多一个意思
function strToCam (str) {
  const arr = str.split('_')
  for (var i = 1; i < arr.length; i++) {
    arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1)
  }
    return arr.join('')
}
console.log(strToCam('get_page_result'))

// 驼峰转下划线
const name = 'getTest'
function camToStr (name) {
  var arr = name.split('')
  for (var i = 1; i < arr.length; i++) {
    if (/[A-Z]/.test(arr[i])) {
       arr[i] = '_' + arr[i].toLowerCase()
    }
  }
  return arr.join('')
}
camToStr (name)


```JavaScript
const getQueryFromUrl = (str) => {
    const result = {}
    const target = str.split("?")[1].split("&")
    for (i = 0; i < target.length; i++) {
        let pair = target[i].split("=");
        if (result[pair[0]]) {
            result[pair[0]] = [...result[pair[0]], pair[1]]
        }
        else { result[pair[0]] = pair[1] }
    }
    return result
}

console.log(getQueryFromUrl('https://www.zhipin.com/web/geek/chat?p1=a&p2=n&p2=b'))
const mySqrt = (n) => {
    if (n < 0) return NaN;
    if (n === 0 || n === 1) return n
    let val = n;
    let last = 0;
    do {
        console.log(val, last)
        last = val;
        val = (val + n / val) / 2;
    }
    while (Math.abs(val - last) > Number.EPSILON)

    return val.toFixed(4)
}

console.log(mySqrt(3))
const data = [{ userId: 1, title: 'title1' }, { userId: 2, title: 'other' }, { userId: 3, title: null }, { userId: 4, title: 'title2' }]

const find = function (origin) {
    return {
        value: origin,
        where(object) {
            for (const key in object) {
                if (Object.prototype.hasOwnProperty.call(object, key)) {
                    const element = object[key];
                    if (typeof element === 'function') {
                        this.value = this.value.filter(item => element(item[key], item))
                    } else {
                        this.value = this.value.filter(item => element.test(item[key]))
                    }

                }
            }
            return this
        },
        orderBy(key, sort) {
            return this.value.sort((a, b) => sort !== 'desc' ? a[key] - b[key] : b[key] - a[key])
        }
    }
}

console.log(find(data)
    .where({
        'title': /\d$/,
    })
    .orderBy('userId', 'desc'));


console.log(find(data)
    .where({
        'title': /\d$/,
        'userId': (userId) => userId === 1
    })
    .orderBy('userId', 'desc'));
  • 数组Chunk
function Chunk(arr = [], size = 1) {
  return arr.length
    ? arr.reduce(
        (items, item) => {
          items[items.length - 1].length === size
            ? items.push([item])
            : items[items.length - 1].push(item);
          return items; //必须返回acc
        },
        [[]]
      )
    : [];
}