首页
学习
活动
专区
圈层
工具
发布

分享一些常用的 JS 基础面试题

(str.match(reg)) // 输出符合匹配规则的内容,以数组形式返回 ['2018', '2019', '2020'] console.log(str.match('20')) // 不使用正则...如果找到匹配,则 match方法会把匹配到以数组形式返回,如果正则规则未设置全局修饰符g,则 match方法返回的数组有两个特性:input和index。input属性包含整个被搜索的字符串。...遍历对象的属性 Object.keys方法的参数是一个对象,返回一个数组。...() 遍历对象的属性 Object.getOwnPropertyNames方法与Object.keys类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。...但Object.keys不能返回不可枚举的属性;Object.getOwnPropertyNames能返回不可枚举的属性。

90720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ES6的语法

    ,不能修改元素的值类型 //Object.keys(obj)返回一个数组,由obj的所有属性或者obj的所有索引 //深拷贝: function freezeAll(obj){ var ora=...[]:{}; Object.freeze(obj); //Object.keys(obj)返回一个数组,由obj的所有属性或者obj的所有索引 Object.keys(obj).forEach...(obj)返回一个数组,由obj的所有属性或者obj的所有索引 Object.keys(obj).forEach(function(item){ if(typeof obj[item]=="object...num是否以s解束 str.repeat(n)重复次数,生成新字符串n不是数字会被转成数字,n<=-1报错;-1<n<0,n=NAN解果都为0 str.padStart(n,"xyz")从前面补全字符串...(非继承的属性)的描述对象 enumerable为false,则不可被for in遍历 自身的和继承的 for..in循环:只遍历对象自身的和继承的可枚举属性 Object.keys():返回数组

    74110

    JavaScript 10分钟入门

    因此在还不支持它的浏览器中,为确保一个数字值是一个整数,或者一个数字的字符串被转换为一个整数,就必须使用parseInt函数。类似地,包含小数的字符串可用与parseFloat方法转换。...空字符串,数字0,以及undefined和null,会被转换为false,其他所有值会转换为true。 通常我们需要使用全等符号符号(===和!==)而不是==和!=。...否则,数字2是等于的字符串“2”的, (2 == “2″) is true VAR= [] 和var a = new Array() 都可以定义一个空数组。...正常的类 数组 可以用一个JavaScript数组文本进行初始化变量: var a = [1,2,3]; 因为它们是数组列表,JS数组可动态增长:我们可以使用比数组的长度更大的索引。...horse": "mein Pferd" } 通过Object.keys(m)可以获得map中所有的键: var i=0, key="", keys=[]; keys = Object.keys( myTranslation

    1.6K100

    一行 Object.keys() 引发的血案

    根据 ECMAScript 规范[4],在输出 keys 时会先将所有 key 为数组索引类型(正整数)从小到大的顺序排序,然后将所有字符串类型(包括负数、浮点数)的 key 按照实际创建的顺序来排序。...的确通过搜索引擎可以很快就能知道 Object.keys() 的返回顺序是怎样的,但是很多都只流于表面,甚至我还见过这样片面的回答:数字排前面,字符串排后面。...我们先来看看在 MDN[6] 上关于 Object.keys() 的描述: Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致...到这里,我们已经知道我们想要的答案,这里总结一下: 创建一个空的列表用于存放 keys 将所有合法的数组索引按升序的顺序存入 将所有字符串类型索引按属性创建时间以升序的顺序存入 将所有 Symbol 类型索引按属性创建时间以升序的顺序存入...返回 keys 这里顺便也纠正一个普遍的误区:有些回答说将所有属性为数字类型的 key 从小到大排序,其实不然,还必须要符合 「合法的数组索引」 ,也即只有正整数才行,负数或者浮点数,一律当做字符串处理

    1K20

    Javscript数组快速填充数据的8种方

    fill() fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。...Array.from({length:10},(item,index)=>index) map() 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 — 一个 for...of 循环在每次迭代后会返回一个形式为...(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7个undefined组成的数组)。...() Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。..., 9 ] 创建值为String的数组 let arr = Object.keys([...Array(10)]); //[ "0", "1", "2", "3", "4", "5", "6", "7

    1.3K20

    ES6之Reflect和Proxy

    (钩子函数Hook) 反射API以Reflect对象的形式出现,对象中方法的默认特性与相同的底层操作一致,而代理可以覆写这些操作,每个代理陷阱对应一个命名和参数都相同的Reflect方法。...关于Proxy和Object.defineProperty()对于数组的劫持 以及对于Vue为什么不可以实现数组的数据响应式劫持解释 无论是Object.defineProperty()还是new Proxy...()对于数组的代理,数字的原本方法比如push(), pop(), shift()等这些方法是可以不被拦截的,所以这也就Vue底层对于数组的监听在原型上重写了这些方法(变异方法,做到数据响应式)。...(虽然Vue不支持对于数组下标形式的修改,但是这两种方式显然是支持数组下标的拦截的。) 为什么不用数组的拦截并不是不支持而是->参见github上尤大的回答。...陷阱唯一接收的参数事操作的目标,返回值必须是一个数组或者类数组对象,否则就会抛出错误。

    51920

    重学ES6之代理Proxy和反射Reflect

    (钩子函数Hook) 反射API以Refelect对象的形式出现,对象中方法的默认特性与相同的底层操作一致,而代理可以覆写这些操作,每个代理陷阱对应一个命名和参数都相同的Refelect方法。...(虽然Vue不支持对于数组下标形式的修改,但是这两种方式是支持数组下标的拦截的。) 为什么不用数组的拦截并不是不支持而是->参见github上尤大的回答。 !...陷阱唯一接收的参数事操作的目标,返回值必须是一个数组或者类数组对象,否则就会抛出错误。...当调用Object.keys(),Object.getOwnPropertyNames(),Object.getOwnPropertySymbols()或者Object.assign()以及for in...然后将过滤后的数组元素添加到proxy的方法返回上 user = new Proxy(userInfo,{ ownKeys(target) { // 返回不以_开头的属性数组

    96530

    如果再写 for 循环,我就锤自己!

    i = 0, keys=Object.keys(profile); i keys.length;i++){ console.log(keys[i]) // 对象的键值 console.log...//遍历对象 let profile = {name:"April",nickname:"二十七刻",country:"China"}; let keys = Object.keys(profile...定义一个变量i(数字类型,表示数组的下标),按照一定的条件,对i进行循环累加。条件通常为循环对象的长度,当超过长度就停止循环。因为对象无法判断长度,所以搭配Object.keys()使用。...遍历数组时把数组的下标当作键值,此时的i是个字符串型的。它是为遍历对象属性而构建的,不建议与数组一起使用。 for...of ES6 提出。只遍历可迭代对象的数据。...此时建议使用 forEach 对于纯对象的遍历,选择for..in枚举更方便;对于数组遍历,如果不需要知道索引for..of迭代更合适,因为还可以中断;如果需要知道索引,则forEach()更合适;对于其他字符串

    66550

    【源码共读】Vue2工具函数

    3.3 toNumber 转换成数字型,如果没法转换成数字型就返回原字符串。该方法参数只能是字符串类型。...val : n} 注意,由于parseFloat只要参数字符串的第一个字符能被解析成数字,就会返回数字,即使后面不是数字也一样,如上面例子的123a。...简单讲一下步骤: Object.create(null)生成没有原型链的空对象 str.split(',')把字符串以,为分隔符,将字符串分割为字符串数组 遍历分割的数组,以子字符串为key,以...|| []) }, []).join(',')} 接收一个对象数组,将staticKeys的值(数组),拼接成静态键的数组,最后将该数组转化成字符串形式,用,连接。...isArrayB) { const keysA = Object.keys(a) const keysB = Object.keys(b) return keysA.length

    1K30

    《学习JavaScript数据结构与算法》-- 5.字典和散列表(笔记)

    字典和集合很相似,集合以[值, 值]的形式存储元素,字典则是以[键, 值]的形式来存储元素。字典也称作映射、符号表或关联数组。 在计算机科学中,字典经常用来保存对象的引用地址。...delete this.table[this.toStrFn(key)]; return true; } return false; } 5.1.6 将字典所包含的所有数值以数组形式返回...values() { return this.keyValues().map(valuePair => valuePair.value); } 5.1.7 将字典所包含的所有键名以数组形式返回...散列函数的作用是给定一个键值,然后返回值在表中的地址。 散列表有一些在计算机科学中应用的例子。因为它是字典的一种实现,所以可以用作关联数组。它也可以用来对数据库进行索引。...方法都返回Iterator,而不是值或键构成的数组。

    1.1K00

    for 循环的 5 种写法,哪种最快?

    i = 0, keys=Object.keys(profile); i keys.length;i++){ console.log(keys[i]) // 对象的键值 console.log...//遍历对象 let profile = {name:"April",nickname:"二十七刻",country:"China"}; let keys = Object.keys(profile...定义一个变量i(数字类型,表示数组的下标),按照一定的条件,对i进行循环累加。条件通常为循环对象的长度,当超过长度就停止循环。因为对象无法判断长度,所以搭配Object.keys()使用。...遍历数组时把数组的下标当作键值,此时的i是个字符串型的。它是为遍历对象属性而构建的,不建议与数组一起使用。 for...of ES6 提出。只遍历可迭代对象的数据。...此时建议使用 forEach 对于纯对象的遍历,选择for..in枚举更方便;对于数组遍历,如果不需要知道索引for..of迭代更合适,因为还可以中断;如果需要知道索引,则forEach()更合适;对于其他字符串

    1.3K20

    javaScript 循环遍历大全

    遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串 var foo = { name: 'bar',...,但一般不推荐把for…in用在数组遍历上面,如果for…in普通数组的话,a返回数组的索引。...() 遍历对象的属性 Object.getOwnPropertyNames方法与Object.keys类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。...六:Object对象的两个遍历Object.keys与Object.getOwnPropertyNames:    他们都是遍历对象的属性,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名...但Object.keys不能返回不可枚举的属性;Object.getOwnPropertyNames能返回不可枚举的属性。

    2.7K11

    通过几个事例,就可以说明 for...of 循环在 JS 是不可或缺

    数组的迭代 for...of的最常见应用是对数组项进行迭代。 该循环可以很好且短暂地完成它,而无需其他变量来保持索引。...数组方法 entries() 可以用于访问迭代项的索引,该方法在每次迭代时返回一组键值对[index, item]。...键可以是任何基本类型(通常是字符串,但也可以是数字等) 幸运的是,Map也是可迭代的(在键/值对上进行迭代),所以使用for...of可以轻松地在所有键/值对上循环遍历。...通常,我要先使用Object.keys()提取对象键,然后使用forEach()来遍历键数组: const person = { name: '前端小智', job: '前端分享者' } Object.keys...因为HTMLCollection是一个类似数组的对象(而不是一个常规数组),所以我们不能使用常规数组方法。 例如,每个 DOM 元素的children属性都是HTMLCollection。

    1.4K50
    领券