-
编写函数, 筛选对象, 将 key 为字母, 数字, 中文的键值对分别放置到
enKeyObj
numKeyObj
cnKeyObj
const mixObj = { Hello: 0, 你: 3, Js: 1, 5: 6, 好: 4, 7: 8, }; function filterObject(mixObj) { const filteredObj = { enKeyObj: {}, numKeyObj: {}, cnKeyObj: {}, }; //...请编写具体实现 return filteredObj; } const { enKeyObj, numKeyObj, cnKeyObj } = filterObject(mixObj);
参考: 174 道 JavaScript 面试题,助你查漏补缺
-
DOM 是什么的缩写, 请给出全称
-
简述 Javascript 和 ECMAScript 的关系
-
请给出一下代码输出结果
var a = 1; function update1(a) { a = 2; } update1(a); console.log(a);
-
JS 的基本数据类型
-
列举 3 种判断数据类型的方法, 哪个最准确 JS 判断数据类型1
-
js 中整数的安全范围是多少?(提示: JS 内置变量, 不用给出具体数值)
-
isNaN 和 Number.isNaN 函数的区别?
-
如何判断一个变量不是是数组
-
简述
Array.of
的作用 -
document.getElementsByTagName("div")
这段代码的返回值是什么数据类型? 如何转成数组? -
简述包装类型
-
{}.toString()
的执行结果是什么 -
编写一个函数, 可以取值任意范围内的随机
function getRandomNum(min, max) { if (Number.isNaN(min) || Number.isNaN(max)) { throw new Error("min max 需要为数字"); } if (max < min || max == min) { throw new Error("请给出合理随机值范围"); } // 实现 }
-
给出以下代码执行结果
let a = 5; let b = a++; let c = ++a; console.log(a, b, c);
-
给出以下代码执行结果
const a = "" || 0; const b = "" && 1; console.log(a, b);
-
给出以下代码执行结果
const a = NaN == NaN; const b = undefined == null; console.log(a, b);
-
innerHTML
与outerHTML
的区别? -
.call()
和.apply
() 的区别? -
编写函数, 筛选对象, 将 key 为字母, 数字, 中文的键值对分别放置到
enKeyObj
numKeyObj
cnKeyObj
const mixObj = { Hello: 0, 你: 3, Js: 1, 5: 6, 好: 4, 7: 8, }; function filterObject(mixObj) { const filteredObj = { enKeyObj: {}, numKeyObj: {}, cnKeyObj: {}, }; //...请编写具体实现 return filteredObj; } const { enKeyObj, numKeyObj, cnKeyObj } = filterObject(mixObj);
数组相关
-
遍历的数组方法有哪些(共有 10 种, 尽力给出即可)
-
分离出
str
中的数字并去重排序, 并以字符串方式输出const str = "Hello Js 123 你好 Js 908^*&&)(230-)1450909"; // 期望输出结果 01234589
-
编写函数, 将下面的二维数组变为一维数组(要求: 使用
map
函数)const dbArr = [ ["a", "b"], ["c", "d"], ["e", "f"], ]; function flatArr(arr) { // ...编写实现 } const arr = flatArr(dbArr); console.log(arr);
-
编写函数, 计算每个字符在字符串中出现的次数, 且去除空字符
const a = `Nulla consequat voluptate elit elit mollit Lorem excepteur tempor laborum. Ad in cillum pariatur aute voluptate Lorem aliqua tempor non nostrud ullamco cup 之足司,秦生是吴俭的无处爱虽极此事德中春而别案,曾作动承担太治竟气也秦治,妄种好五气决对不十事承,才貂同谓,好不你血十年病但设快自。 人五人如才二使后德县在人亓,终有未马仍清实,流决予而活看恶他作,卑后千没说郭你最国杀也领,丈用没用若和斯的于土往生生即君之,有谭定弄之人 无不好的文我今清行到,在太要我可位位,高招者不才之非要上一惜天到尺韩有,变言之若天张韩远千求她负徨那付,人为范,低竟投。 idatat velit aute. Sit sit consequat eiusmod sit laboris duis. Aliqua consectetur deserunt consectetur amet ipsum duis quis magna do velit velit.`;
-
-
将以下数组转换城树形数据
const cars = [ // 吉利车型 { mode: "银河E8", brand: "Geely", subBrand: "Galaxy" }, { mode: "银河L6", brand: "Geely", subBrand: "Galaxy" }, { mode: "几何A", brand: "Geely", subBrand: "Galaxy" }, { mode: "帝豪EC8", brand: "Geely", subBrand: "Emgrand" }, { mode: "帝豪GL", brand: "Geely", subBrand: "Emgrand" }, { mode: "博瑞", brand: "Geely", subBrand: "Borui" }, { mode: "远景", brand: "Geely", subBrand: "Yuanjing" }, // 比亚迪车型 { mode: "海豹", brand: "BYD", subBrand: "Ocean" }, { mode: "海豚", brand: "BYD", subBrand: "Ocean" }, { mode: "唐EV", brand: "BYD", subBrand: "Tang" }, { mode: "汉EV", brand: "BYD", subBrand: "Han" }, { mode: "秦PLUS EV", brand: "BYD", subBrand: "Qin" }, { mode: "元PLUS", brand: "BYD", subBrand: "Yuan" }, // 特斯拉车型 { mode: "Model 3", brand: "Tesla", subBrand: "Original" }, { mode: "Model S", brand: "Tesla", subBrand: "Original" }, { mode: "Model X", brand: "Tesla", subBrand: "Original" }, { mode: "Model Y", brand: "Tesla", subBrand: "Original" }, ];
目标数据结果
const carTree = { Geely: { Galaxy: ["银河E8", "银河L6", "几何A"], Emgrand: ["帝豪EC8", "帝豪GL"], Borui: ["博瑞"], Yuanjing: ["远景"], }, BYD: { Ocean: ["海豹", "海豚"], Tang: ["唐EV"], Han: ["汉EV"], Qin: ["秦PLUS EV"], Yuan: ["元PLUS"], }, Tesla: { Original: ["Model 3", "Model S", "Model X", "Model Y"], }, };
-
如何快速清空一个数组
const arr = ["b", "b", "c"]; //... 一行代码 console.log("输出结果:", arr); // 输出结果: []
-
求数组交集
var numOne = [0, 2, 4, 6, 8, 8]; var numTwo = [1, 2, 3, 4, 5, 6]; function getIntersection(arr1, arr2) { // ...实现 } console.log(getIntersection(numOne, numTwo)); // [2, 4, 6]
JS 判断数据类型
在 JavaScript 中,判断数据类型的方法有多种,每种方法适用于不同的场景。以下是一些常用的方法及其特点:
1. typeof
-
用法:
typeof
是一个操作符,用于返回变量的数据类型。 -
返回值:返回一个字符串,表示数据类型。
-
限制:
- 对于基本类型(如
number
、string
、boolean
、undefined
),返回正确的类型。 - 对于
null
和数组,均返回"object"
。 - 对于函数,返回
"function"
。
- 对于基本类型(如
console.log(typeof 123); // "number" console.log(typeof "hello"); // "string" console.log(typeof null); // "object" console.log(typeof []); // "object" console.log(typeof function(){}); // "function"
2. instanceof
- 用法:
instanceof
用于检查一个对象是否是某个构造函数的实例。 - 适用范围:主要用于引用类型的判断,如数组和对象。
- 限制:不能用于基本数据类型。
console.log([] instanceof Array); // true console.log({} instanceof Object); // true console.log(null instanceof Object); // false
3. Object.prototype.toString.call()
- 用法:通过调用
Object.prototype.toString.call()
方法,可以准确判断数据类型。 - 返回值:返回格式为
[object Type]
的字符串,其中Type
是具体的数据类型。 - 优点:能够区分所有数据类型,包括数组和
null
。
console.log(Object.prototype.toString.call(123)); // "[object Number]" console.log(Object.prototype.toString.call([])); // "[object Array]" console.log(Object.prototype.toString.call(null)); // "[object Null]"
4. constructor 属性
- 用法:通过对象的
constructor
属性可以判断其构造函数。 - 限制:对于
null
和undefined
没有constructor
属性。
console.log((123).constructor === Number); // true console.log([1, 2, 3].constructor === Array); // true
5. Array.isArray()
- 用法:专门用于判断一个值是否为数组。
- 返回值:如果是数组则返回
true
,否则返回false
。
console.log(Array.isArray([1, 2, 3])); // true console.log(Array.isArray({})); // false
总结
在 JavaScript 中,选择合适的方法来判断数据类型非常重要。对于简单的基本数据类型,可以使用
typeof
;而对于复杂的数据结构,尤其是需要区分数组和对象时,使用Object.prototype.toString.call()
是更为可靠的方法。结合这些方法,可以实现一个全面的数据类型判断函数,以满足不同的需求。Citations:
[1] https://segmentfault.com/a/1190000018160547
[2] https://juejin.cn/post/7200396667505704997
[3] https://blog.csdn.net/Clara_G/article/details/104755965
[4] https://juejin.cn/post/7000300249235357709
[5] https://www.cnblogs.com/onepixel/p/5126046.html
[6] https://segmentfault.com/a/1190000015264821 ↩
-
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于