更新时间:2022-12-22 14:43:52 来源:极悦 浏览876次
如果大家想要成为成熟的程序员,那么Js就一定是需要掌握的,因为在工作中大家难免需要解决一些较为复杂的代码问题,成为一定经验的程序员,就更应该要懂得利用Js如何高效的解决问题:
1.在数组或对象中提取值
因为数组和对象这样的数据结构在js开发中被大量的应用,所以有中级程序员应该熟练掌握对数组和对象的处理技巧。
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" },
];
本题要求提取数组中的每个对象的name属性存储到一个数组中,结果应该如下:
["John", "Mike", "Danny", "Lisa", "Sophie"];
一般的解法是,定义一个空数组,遍历数组,在每次循环中使用内置的push()方法取出并存储对象的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);
上面的代码虽然可以解决问题,但是有一个问题,中级程序员应该使用ES6语法而不是ES5语法解决问题,所以让我们使用ES6的map函数代替循环。
const extractValues = (arr, property) => {
let output = arr.map((element) => element[property]);
return output;
};
所以本题考察的是如何使用ES6语法处理数组和对象。
2.将字符串向左旋转 k 次
和数字类型一样,字符串是js中最常用的数据类型之一。中级js程序员应该对内置的字符串函数比较熟练。 给定一个字符串和数字。
let string = "javascript"
let n = 2
按照上面的要求,给定的字符串应该向左旋转两次。 以下是期望得到结果。
"vascriptja"
解答该题的最简单方法是使用内置的 substring() 函数。
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));
当 n = 2 时,前两个字符“ja” 被删除并添加到末尾,这会将字符串向左旋转两次。
因此,首先提取除前两个字符以外的子串(part1),然后使用相同的函数提取剩余的两个字符(part2)作为子串。 最后,连接两个子串。
3.计算两个日期之间的天数
初学者通常没有任何日期工作经验,但中级程序员必须处理过日期,因为处理日期是JavaScript开发的常见工作。
给定两个DD/MM/YYYY 格式的日期。
let date1 = "08/10/2021";
let date2 = "09/11/2021"
要解决这一问题,需要正确使用内置日期函数。
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));
这里,首先转换日期的格式,然后使用 getTime()方法获取日期的时间戳。
以上就是“互联网的Js中级面试题及技巧”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习