在实际开发中,基本都是面向对象的。一般面试官出题目,第一个考察你的逻辑,第二个考察你对编程的理解;面向对象编程,可以提高我们的开发效率,从而缩短开发周期
,这里我给两个简单的例子说明。面向对象的思想非常重要,。。。非常重要。。。。非常重要
1、给定一个数组,求数组中每个元素出现的次数,小到大、大到小排序。
// /* 统计数组中数据出现的次数,并大到小、小到大排序*/
let arr = [1, 4, 2, 1, 3, 2, 1, 4]
// 2. 定义一个对象
const obj = {}
// 1. 遍历
arr.forEach(item => {
// 判断出现了谁,次数+1
if (obj[item]) {
obj[item] += 1
} else {
obj[item] = 1
}
})
console.log(obj);
// 排序不单独写了,把下面字符串的排序写出来,数组的自然就会了
2、给定一个字符串,求每个字符出现的次数,并大到小、小到大排序
//统计字符串中每个字符出现的次数,然后排序
const str = 'lkasjglkjasdlkgjaodgiaposdkafpk'
const obj = {}
for(let i = 0; i < str.length; i++){
if(obj[str[i]]){
obj[str[i]] += 1
}else {
obj[str[i]] = 1
}
}
console.log(obj);
//排序(下面这个是面向过程)
//把obj先转换为数组,然后把里面的每个 键值对 进行排序
const arr = []
for (let key in obj) {
let temp = {}
// temp[key] = obj[key]
temp.chart = key
temp.times = obj[key]
arr.push(temp)
}
//console.log(arr);
arr.sort((a, b) => {
return b.times - a.times
})
//console.log(arr);
arr.forEach(e => console.log(`字符${e.chart}出现了${e.times}次`))
//简化1(面向对象)
const arr = []
const keys = Object.keys(obj)
const values = Object.values(obj)
//console.log(keys);
//console.log(values);
keys.forEach((item,index)=>{
arr.push({chart:item,times:values[index]})
})
arr.sort
//简化2(面向对象)
const values = Object.values(obj)
Object.keys(obj).map((item,index)=>{
return {chart:item,times:values[index]}
}).sort()
//简化3(面向对象)
const arr = Object.keys(obj).map(item=>{
return {chart:item,times:obj[item]}
}).sort((a,b)=>a.times - b.times)
console.log(arr);
欢迎大家讨论。。。