📅  最后修改于: 2023-12-03 15:41:09.501000             🧑  作者: Mango
这篇文章将涉及到程序员在日常开发中可能会遇到的一些杂项问题。通过解决这些问题,可以提高我们代码编写的效率和质量,同时也能够理解一些基础的算法知识。
在 JavaScript 中,赋值操作只是将变量指向了同一个对象。如果需要快速复制一个对象,通常使用对象展开符(spread operator):
const original = { foo: 'bar', baz: 'qux' };
const copy = { ...original };
如果对象的属性值是引用类型,这种复制方式只是复制了引用,而非值本身。需要使用深拷贝(deep clone)的方式进行复制:
const original = { foo: 'bar', baz: { nested: 'object' } };
const deepCopy = JSON.parse(JSON.stringify(original));
对于一个对象,可以使用 for-in
循环遍历其属性:
const obj = { foo: 'bar', baz: 'qux' };
for (let prop in obj) {
console.log(prop, obj[prop]);
}
// 输出:
// foo bar
// baz qux
需要注意的是,for-in
循环会遍历对象原型链上的所有属性,因此需要使用 hasOwnProperty
方法进行判断。
const obj = { foo: 'bar', baz: 'qux' };
for (let prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.log(prop, obj[prop]);
}
}
可以使用 Set 数据结构进行去重:
const arr = [1, 2, 2, 3, 3, 3];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr);
// 输出 [1, 2, 3]
可以使用 Number 函数将字符串转换为数字,也可以使用一元加号运算符:
const str = '123';
const num1 = Number(str);
const num2 = +str;
console.log(typeof num1, num1); // 输出 'number', 123
console.log(typeof num2, num2); // 输出 'number', 123
可以使用 Array.isArray
方法判断一个变量是否为数组类型:
const arr = [1, 2, 3];
const notArr = 'not array';
console.log(Array.isArray(arr)); // 输出 true
console.log(Array.isArray(notArr)); // 输出 false
可以使用 Math.max
和 Math.min
方法获取数组中的最大值和最小值:
const arr = [1, 2, 3];
console.log(Math.max(...arr)); // 输出 3
console.log(Math.min(...arr)); // 输出 1
可以使用 Array.reverse
方法将数组中的元素反转:
const arr = ['a', 'b', 'c'];
console.log(arr.reverse()); // 输出 ['c', 'b', 'a']
以上是一些关于 JavaScript 中常见杂项问题的解决方案,这些问题可能难以想到,但是在日常编程中却并不少见。通过学习这些解决方案,可以更加熟练地使用 JavaScript,同时也更容易理解一些基础的算法知识。