用 JavaScript 敲开大厂之门:实现梦想的关键一步(二)
前言
,给大家分享了用JavaScript解答大厂编程题的答题思路和如何写出优质代码的方法。接下来我将继续分享关于用JavaScript解答大厂编程题的方法。
答题
我先举个栗子
大胃王吉吉国王想要吃100根香蕉。他先把香蕉都放在竹筐里,等竹筐里有100根香蕉的时候再开始吃。
面对这样的题目我们要怎么做呢?
答题思路
分析题目
吉吉国王、香蕉和竹筐都是对象;吉吉国王通过挑选该水果是不是香蕉再放入竹筐里的这一个动作我们可以用方法实现;证明是否是香蕉这一动作也可以通过方法实现;吃香蕉的动作也同样用方法实现。
//竹筐
const basket = []
//吉吉国王
const king = {
eatbanana: function () {
console.log('我要开始吃香蕉了')
}
}
//香蕉
const banana = {
//证明是香蕉
bananaSign: function () {
console.log('我是香蕉');
}
}
封装思想
吉吉国王将香蕉放入竹筐里的动作是方法,我们可以用抽象的思想将把香蕉放入竹筐封装成一个函数。
我们要怎么在水果中挑选出香蕉呢?
我们可以通过香蕉对象的bananaSign方法去判断是否是香蕉。
//判断是不是香蕉再放入竹筐
function joinbasket(fruit) {
//如果fruit存在并且有bananaSign方法,就可以认作为是香蕉
if (fruit && typeof fruit.bananaSign == 'function') {
basket.push(fruit);
}
//判断完是香蕉便放入竹筐
console.log('放入竹筐');
}
&&运算符可以避免错误,提高代码健壮性。
我们也可以用封装的思想实现观察竹筐里香蕉数量。
function banananumber() {
console.log('竹筐里已经有' + basket.length + '根香蕉了');
if (basket.length === 100) {
console.log('吉吉国王可以吃香蕉了')
} else {
console.log('还没有满100根香蕉,吉吉国王还要等一会才能吃上香蕉')
}
}
我们可以使用for循环实现挑选100根香蕉
for (let i = 0; i < 100; i++) {
joinbasket(banana);
}
banananumber();
这样我们就完成了这个题目。
为什么选择js
首先,js是基于原型式的面向对象。js是弱类型的,不需要什么类型,表现力特别强大。在js中除了简单数据类型一切都是对象。
我用吉吉国王挑香蕉的题目举个栗子。
当竹筐里只有99根香蕉,一直找不到最后一根香蕉时,吉吉国王就有些急不可耐了。如果此时找到一个有bananaSign方法的桃子时会发生什么情况?
//竹筐
const basket = []
//吉吉国王
const king = {
eatbanana: function () {
console.log('我要开始吃香蕉了')
}
}
//香蕉
const banana = {
//证明是香蕉
bananaSign: function () {
console.log('我是香蕉');
}
}
//桃子
const peach = {
bananaSign: function () {
console.log('我是香蕉');
}
}
//判断是不是香蕉再放入竹筐
function joinbasket(fruit) {
//如果fruit存在并且有bananaSign方法,就可以认作为是香蕉
if (fruit && typeof fruit.bananaSign == 'function') {
basket.push(fruit);
}
//判断完是香蕉便放入竹筐
console.log('放入竹筐');
}
function banananumber() {
console.log('竹筐里已经有' + basket.length + '根香蕉了');
if (basket.length === 100) {
console.log('吉吉国王可以吃香蕉了')
} else {
console.log('还没有满100根香蕉,吉吉国王还要等一会才能吃上香蕉')
}
}
for (let i = 0; i < 99; i++) {
joinbasket(banana);
}
joinbasket(peach);
banananumber();
结果是:
桃子也被认作为香蕉了。这就是js与其他语言的区别之一。
总结
敏锐的逻辑能力+灵活使用对象方法+拥有封装思想+深入的语言能力=拿下大厂编程题
转载自:https://juejin.cn/post/7358388858305822756