One 、 Humping
- user-top-info-name Turn into a hump userTopInfoName
Method 1- Using the array
function toCamelCase(str) {
if (!str) return ''
// First convert the string to lowercase
str = str.toLowerCase()
// Use split Convert string to array
let strArr = str.split('-')
// Use map Traversal array , The first one in the array doesn't need to be converted , All the others turn
/*
strArr = strArr.map((item,index) => {
if(index !==0) {
return item[0].toUpperCase()+item.substr(1)
}else {
return item
}
})
*/
// Simplify writing
strArr = strArr.map((item, index) =>
index !== 0 ? item[0].toUpperCase() + item.substr(1) : item
)
// array-based join Method converts the processed array into a string and returns
return strArr.join('')
}
// test
console.log(toCamelCase('user-top-info-name')) // Output :userTopInfoName
Method 2- Use regular
function toCamelCase2(str) {
if (!str) return ''
// First convert the string to lowercase
str = str.toLowerCase()
str = str.replace(/(\-\w)/g, (chars) => chars[1].toUpperCase())
return str
}
// test
console.log(toCamelCase('user-top-info-name')) // Output :userTopInfoName
Two 、 Array weight removal
function uniqueArray(arr) {
// Use Set Duplicate the array , And then use Array.from Methods will set Convert to array and return
// return Array.from(new Set(arr))
return [...new Set(arr)] // You can also use the three-point operator
}
// test
console.log(uniqueArray([2, 2, 3, 3, 4, 4, 5, 5, 6, 6]))
3、 ... and 、 Count the most letters in the string
function getlongestChar(str) {
if (!str) return ''
if (str.length === 1) return str
// Define an object to store characters
let obj = {}
// Loop through the string
for (let i = 0; i < str.length; i++) {
// Get the current character
let char = str.charAt(i)
// Determine whether the current character is obj Properties of , If so, it is the attribute +1, If the current property is not assigned a value of 1
obj[char] ? obj[char]++ : (obj[char] = 1)
}
// Get the maximum value
const max = Math.max(...Object.values(obj))
// The character that gets the most value
const resultChar = Object.keys(obj).find((item) => obj[item] === max)
// Return character
return resultChar
}
console.log(getlongestChar('bbbdddjjjaaab'))
Four 、 Reverse string order
function reverseString(str) {
// Split a string into arrays , Then call the flip method of the array , Finally, the array is converted to a string
return str.split('').reverse().join('')
/*
You can also use reverse order
*/
// let result = ''
// for(let i = str.length-1; i >= 0;i++) {
// result += str[i]
// }
// return result
}
console.log(reverseString('Hello World'))
5、 ... and 、 Deep copy
function deepCopy(target) {
/*
Determine whether the target element is an array or an object and the target element is not null
*/
if (
target instanceof Array ||
(target !== null && typeof target === 'object')
) {
// Create an array or object based on the type of target data
let cloneTarget = target instanceof Array ? [] : {}
// Loop through the target element , for...in... Loops can traverse arrays and objects
for (let key in target) {
// recursive copying
cloneTarget[key] = deepCopy(target[key])
}
// Return the copied element
return cloneTarget
} else {
// If it is not an array or object type, return the element directly
return target
}
}
console.log(deepCopy({ name: 'kobe', age: 42 }))
6、 ... and 、 Merge multiple ordered arrays -- Sort -- duplicate removal
function flatArray(arr) {
// Create an empty array
let resultArr = []
// Loop through a two-dimensional array
arr.forEach((item) => {
// Convert a two-dimensional array into a one-dimensional array
item instanceof Array ? resultArr.push(...item) : resultArr.push(item)
})
// duplicate removal
resultArr = [...new Set(resultArr)]
// Sort and return
return resultArr.sort((a, b) => a - b)
}
console.log(
flatArray([
[1, 2, 3],
[6, 2, 1, 3, 4],
[2, 1, 4, 5, 3, 6],
])
)
7、 ... and 、 Array sorting
function sortArray(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
return arr
}
console.log(sortArray([22, 55, 11, 33, 44, 55, 66, 77, 11, 44]))
8、 ... and 、 Joseph Ring problem
- describe : The number is 1 To 100 A hundred people in a circle , With 123123 The way to count off , Count to 3 People who quit the circle automatically , The rest continued to count , Ask the number of the last person left ?
function josephRing(n, k) {
// Create an array
let arr = []
// Remove the first appearance
for (let i = 1; i <= n; i++) {
if (i % k !== 0) arr.push(i)
}
// Define a counter
let flag = 0
while (arr.length > 1) {
let outNum = 0 // The number of people out of this cycle , Easy to locate the element position
let len = arr.length
for (let i = 0; i < len; i++) {
flag++
if (flag === k) {
flag = 0
arr.splice(i - outNum, 1)
outNum++
}
}
}
return arr[0]
}
console.log(josephRing(100))
Nine 、 Palindrome string
- Palindrome string : It's a string that is read both forward and backward .
Method 1: Determine whether the string and flipped are equal
function palindromeString(str) {
/*
1. Determine whether the string and flipped are equal
*/
return str === str.split('').reverse().join('')
}
console.log(palindromeString('aba'))
Method 2: Loop through the string , Determine whether the first character and the last character are equal in turn , Whether the second and the last two are equal ...
function palindromeString2(str) {
const len = str.length
let flag = true
// Loop through the string , It's only half way through
for (let i = 0; i < len / 2; i++) {
// Judge in turn str[0] !== str[str.length-1-0],str[1] !== str[str.length-1-1]...
if (str[i] !== str[len - 1 - i]) {
// If there is a group that is not equal to flag The assignment is false
flag = false
break // End of cycle
}
}
// return flag
return flag
}
console.log(palindromeString2('aba'))
Ten 、 Without the aid of temporary variables , Exchange two integers
function swap(a, b) {
// 10 20
// [a,b] = [b,a]
a = a - b // a = -10
b = b + a // b = 10
a = b - a // a = 20
return [a, b]
}
console.log(swap(30, 20))
11、 ... and 、 Find the maximum difference in the array
// Find the maximum difference in the array
function getMaxDiff(arr) {
/*
1. adopt Math.max() and Math.min() Add the three-point operator
*/
// return Math.max(...arr) - Math.min(...arr)
/*
2. After sorting the array, calculate the difference between the last and the first
*/
arr.sort((a, b) => a - b)
return arr[arr.length - 1] - arr[0]
}
console.log(getMaxDiff([50, 60, 10, 20, 40, 80, 90]))
Twelve 、 Randomly generates a string of specified length
Method 1
// Randomly generates a string of specified length
function randomStr(len) {
// Define the source string
let sourceStr =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
/*
1. Using arrays , Scramble the array to get the front len individual
*/
let arr = sourceStr.split('')
// Put the array out of order
arr.sort(() => 0.5 - Math.random())
// Get array len Array elements are converted into strings
return arr.filter((item, index) => index < len).join('')
}
console.log(randomStr(6))
Method 2
// Randomly generates a string of specified length
function randomStr2(len) {
// Define the source string
let sourceStr =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
/*
2. Loop to get random subscripts
*/
let returnStr = ''
while (returnStr.length < len) {
let index = Math.floor(Math.random() * sourceStr.length)
returnStr += sourceStr[index]
}
return returnStr
}
console.log(randomStr2(6))
Welcome the boss to correct