更新時(shí)間:2022-12-22 14:43:52 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1336次
如果大家想要成為成熟的程序員,那么Js就一定是需要掌握的,因?yàn)樵诠ぷ髦写蠹译y免需要解決一些較為復(fù)雜的代碼問題,成為一定經(jīng)驗(yàn)的程序員,就更應(yīng)該要懂得利用Js如何高效的解決問題:
1.在數(shù)組或?qū)ο笾刑崛≈?/strong>
因?yàn)閿?shù)組和對(duì)象這樣的數(shù)據(jù)結(jié)構(gòu)在js開發(fā)中被大量的應(yīng)用,所以有中級(jí)程序員應(yīng)該熟練掌握對(duì)數(shù)組和對(duì)象的處理技巧。
let input = [
{ name: "John", age: 21, city: "New York" },
{ name: "Mike", age: 28, city: "Moscow" },
{ name: "Danny", age: 30, city: "London" },
{ name: "Lisa", age: 26, city: "Paris" },
{ name: "Sophie", age: 19, city: "Berlin" },
];
本題要求提取數(shù)組中的每個(gè)對(duì)象的name屬性存儲(chǔ)到一個(gè)數(shù)組中,結(jié)果應(yīng)該如下:
["John", "Mike", "Danny", "Lisa", "Sophie"];
一般的解法是,定義一個(gè)空數(shù)組,遍歷數(shù)組,在每次循環(huán)中使用內(nèi)置的push()方法取出并存儲(chǔ)對(duì)象的name屬性。
let input = [
{ name: "John", age: 21, city: "New York" },
{ name: "Mike", age: 28, city: "Moscow" },
{ name: "Danny", age: 30, city: "London" },
{ name: "Lisa", age: 26, city: "Paris" },
{ name: "Sophie", age: 19, city: "Berlin" },
];
const extractValues = (arr, property) => {
let output = [];
for (let i = 0; i < arr.length; i++) {
output.push(arr[i][property]);
}
return output;
};
let result = extractValues(input, "name");
console.log(result);
上面的代碼雖然可以解決問題,但是有一個(gè)問題,中級(jí)程序員應(yīng)該使用ES6語法而不是ES5語法解決問題,所以讓我們使用ES6的map函數(shù)代替循環(huán)。
const extractValues = (arr, property) => {
let output = arr.map((element) => element[property]);
return output;
};
所以本題考察的是如何使用ES6語法處理數(shù)組和對(duì)象。
2.將字符串向左旋轉(zhuǎn) k 次
和數(shù)字類型一樣,字符串是js中最常用的數(shù)據(jù)類型之一。中級(jí)js程序員應(yīng)該對(duì)內(nèi)置的字符串函數(shù)比較熟練。 給定一個(gè)字符串和數(shù)字。
let string = "javascript"
let n = 2
按照上面的要求,給定的字符串應(yīng)該向左旋轉(zhuǎn)兩次。 以下是期望得到結(jié)果。
"vascriptja"
解答該題的最簡單方法是使用內(nèi)置的 substring() 函數(shù)。
function rotateLeft(string, n) {
let part1 = string.substring(n, string.length);
let part2 = string.substring(0, n);
let output = part1 + part2;
return output;
}
let string = "javascript";
let n = 2;
console.log(rotateLeft(string, n));
當(dāng) n = 2 時(shí),前兩個(gè)字符“ja” 被刪除并添加到末尾,這會(huì)將字符串向左旋轉(zhuǎn)兩次。
因此,首先提取除前兩個(gè)字符以外的子串(part1),然后使用相同的函數(shù)提取剩余的兩個(gè)字符(part2)作為子串。 最后,連接兩個(gè)子串。
3.計(jì)算兩個(gè)日期之間的天數(shù)
初學(xué)者通常沒有任何日期工作經(jīng)驗(yàn),但中級(jí)程序員必須處理過日期,因?yàn)樘幚砣掌谑荍avaScript開發(fā)的常見工作。
給定兩個(gè)DD/MM/YYYY 格式的日期。
let date1 = "08/10/2021";
let date2 = "09/11/2021"
要解決這一問題,需要正確使用內(nèi)置日期函數(shù)。
const findDays = (date1, date2) => {
let d1 = new Date(date1);
let d2 = new Date(date2);
let difference = d2.getTime() - d1.getTime();
let output = difference / (1000 * 3600 * 24);
return Math.floor(output);
};
let date1 = "11/01/2021";
let d1 = new Date(date1);
console.log(d1.getTime();
let date2 = "11/03/2021";
console.log(findDays(date1, date2));
這里,首先轉(zhuǎn)換日期的格式,然后使用 getTime()方法獲取日期的時(shí)間戳。
以上就是“互聯(lián)網(wǎng)的Js中級(jí)面試題及技巧”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)