// join 将数组连接成字符串
let arr1 = ['George', 'George', 'George']
console.log(arr1.join(''))//GeorgeGeorgeGeorge
// replace() 去掉字符串的空格
let string00 = ' 独爱 那杯 cc '
console.log(string00.replace(/\s+/g, '')) //'独爱那杯cc' 去除所有的空格
console.log(string00.replace(/^\s*/g, '')) //'独爱 那杯 cc ' 去除左边的空格
console.log(string00.replace(/\s*$/g, '')) //' 独爱 那杯 cc' 去除右边的空格
console.log(string00.replace(/^\s*|\s*$/g, ''))//'独爱 那杯 cc' 去除两端的空格
// 解析网址
var pop = 'sdfasdasdfwww.xiaohongshu.comdsjksdjsdj'
console.log(pop.substring(pop.indexOf('w'), (pop.indexOf('m') + 1))) // 'www.xiaohongshu.com'
console.log(pop.substr(pop.indexOf('w'), 19)) // 'www.xiaohongshu.com'
// 数组排序
let arrAy = [1, 2, 3, 2, 5, 3, 5, 1, 6, 4]
// 正序
arrAy.sort((a, b) => {
return a - b
})
console.log(arrAy)//[ 1, 1, 2, 2, 3, 3, 4, 5, 5, 6 ]
// 倒序
arrAy.sort((a, b) => {
return b - a
})
console.log(arrAy)//[ 6, 5, 5, 4, 3, 3, 2, 2, 1, 1 ]
// 冒泡排序
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}
console.log(bubbleSort(arrAy))//[ 1, 1, 2, 2, 3, 3, 4, 5, 5, 6 ]
// 数组求和 取最大数 最小数
const array99 = [5, 4, 7, 8, 9, 2];
// 1、求和
console.log(array99.reduce((a, b) => a + b))//35
// 2、最大数
console.log(array99.reduce((a, b) => a > b ? a : b))//9
// 3、最小数
console.log(array99.reduce((a, b) => a < b ? a : b))//2
// 手写取最大数
function array(arr){
let value;
arr.forEach(item=>{
arr.forEach(i=>{
if(item < i){
value = i
}
})
})
console.log(value)//9
}
array(array99)
// 从数组中过滤出虚假值
const array88 = [3, 0, 6, 7, "", false];
console.log(array88.filter(Boolean))//[3,6,7]
// 数组去重
let arr99 = ["a", "b", "a", "b", "z", "c", "x", "a", "x", "b", "c"];
let arr88 = []
for (let index = 1; index < arr99.length; index++) {
if (arr88.indexOf(arr99[index], 0) === -1) {
arr88.push(arr99[index])
}
}
console.log(arr88)//[ 'b', 'a', 'z', 'c', 'x' ]
// 或
console.log([...new Set(arr99)])//[ 'a', 'b', 'z', 'c', 'x' ]
// 或
let arr999 = arr99.filter((item, index) => arr99.indexOf(item, 0) === index)
console.log(arr999)//[ 'a', 'b', 'z', 'c', 'x' ]
// 浅拷贝 + 深拷贝
// 浅拷贝
// 浅拷贝只能拷贝一层属性 并且拷贝的是内存地址 相互之间修改会有影响
let obj22 = {
class: "UI",
age: 20,
love: {
friuts: "apple",
meat: "beef",
},
};
function pos(b) {
let arr = {};
for (let k in b) {
arr[k] = b[k];
}
return arr;
}
console.log(pos(obj22))//{ class: 'UI', age: 20, love: { friuts: 'apple', meat: 'beef' } }
// 深拷贝
// JSON方法
console.log(JSON.parse(JSON.stringify(obj22)))//{ class: 'UI', age: 20, love: { friuts: 'apple', meat: 'beef' } }
// 递归算法
function pos2(b) {
let arr = {};
for (let k in obj22) {
if (typeof b[k] === "objeck") {
arr[k] = pos(b[k]);
} else {
arr[k] = b[k];
}
}
return arr;
}
console.log(pos2(obj22))//{ class: 'UI', age: 20, love: { friuts: 'apple', meat: 'beef' } }
// 封装对象扁平化
function flatten(obj) {
const ans = {}
inner(obj, null)
function inner(o, prev) {
for (let key in o) {
if (o[key] instanceof Object) {
if (prev === null) {
inner(o[key], key)
} else {
inner(o[key], prev + '.' + key)
}
} else {
if (prev === null) {
ans[key] = o[key]
} else {
ans[prev + '.' + key] = o[key]
}
}
}
}
return ans
}
let obj = {
a: "hhh",
b: "ggg",
c: 666,
d: {
name1: "A",
name2: "B",
name3: "C"
},
e : [1,2,3]
}
console.log(flatten(obj))
/* { a: 'hhh',
b: 'ggg',
c: 666,
'd.name1': 'A',
'd.name2': 'B',
'd.name3': 'C',
'e.0': 1,
'e.1': 2,
'e.2': 3
} */
function sleep(){
return new Promise((resolve,rejecct)=>{
setTimeout(() => {
resolve();
}, 6000);
})
}
async function p() {
await sleep()
console.log(1)//6秒后执行1
}
p()