首页 文章 精选 留言 我的

精选列表

搜索[javascript库],共10000篇文章
优秀的个人博客,低调大师

JavaScript中常用的数组操作方法

一、concat() concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,仅会返回被连接数组的一个副本。 var arr1 = [1,2,3]; var arr2 = [4,5]; var arr3 = arr1.concat(arr2); console.log(arr1); //[1, 2, 3] console.log(arr3); //[1, 2, 3, 4, 5] 复制代码 二、join() join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的,默认使用','号分割,不改变原数组。 var arr = [2,3,4]; console.log(arr.join()); //2,3,4 console.log(arr); //[2, 3, 4] 复制代码 三、push() push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。末尾添加,返回的是长度,会改变原数组。 var a = [2,3,4]; var b = a.push(5); console.log(a); //[2,3,4,5] console.log(b); //4 复制代码 五、shift() shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。返回第一个元素,改变原数组。 var arr = [2,3,4]; console.log(arr.shift()); //2 console.log(arr); //[3,4] 复制代码 六、unshift() unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。返回新长度,改变原数组。 var arr = [2,3,4,5]; console.log(arr.unshift(3,6)); //6 console.log(arr); //[3, 6, 2, 3, 4, 5] 复制代码 tip:该方法可以不传参数,不传参数就是不增加元素。 七、slice() slice() 方法返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。返回选定的元素,该方法不会修 改原数组。 var arr = [2,3,4,5]; console.log(arr.slice(1,3)); //[3,4] console.log(arr); //[2,3,4,5] 复制代码 八、splice() splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。splice() 方法会直接对数组进行修改。 var a = [5,6,7,8]; console.log(a.splice(1,0,9)); //[] console.log(a); // [5, 9, 6, 7, 8] var b = [5,6,7,8]; console.log(b.splice(1,2,3)); //[6, 7] console.log(b); //[5, 3, 8] 复制代码 九、substring() 和 substr() 相同点:如果只是写一个参数,两者的作用都一样:都是是截取字符串从当前下标以后直到字符串最后的字符串片段。 substr(startIndex); substring(startIndex); var str = '123456789'; console.log(str.substr(2)); // "3456789" console.log(str.substring(2)) ;// "3456789" 复制代码 不同点:第二个参数 substr(startIndex,lenth): 第二个参数是截取字符串的长度(从起始点截取某个长度的字符串); substring(startIndex, endIndex): 第二个参数是截取字符串最终的下标 (截取2个位置之间的字符串,‘含头不含尾')。 console.log("123456789".substr(2,5)); // "34567" console.log("123456789".substring(2,5)) ;// "345" 复制代码 十、sort 排序 按照 Unicode code 位置排序,默认升序 var fruit = ['cherries', 'apples', 'bananas']; fruit.sort(); // ['apples', 'bananas', 'cherries'] var scores = [1, 10, 21, 2]; scores.sort(); // [1, 10, 2, 21] 复制代码 十一、reverse() reverse() 方法用于颠倒数组中元素的顺序。返回的是颠倒后的数组,会改变原数组。 var arr = [2,3,4]; console.log(arr.reverse()); //[4, 3, 2] console.log(arr); //[4, 3, 2] 复制代码 十二、indexOf 和 lastIndexOf 都接受两个参数:查找的值、查找起始位置 不存在,返回 -1 ;存在,返回位置。indexOf 是从前往后查找, lastIndexOf 是从后往前查找。 indexOf var a = [2, 9, 9]; a.indexOf(2); // 0 a.indexOf(7); // -1 if (a.indexOf(7) === -1) { // element doesn't exist in array } lastIndexOf var numbers = [2, 5, 9, 2]; numbers.lastIndexOf(2); // 3 numbers.lastIndexOf(7); // -1 numbers.lastIndexOf(2, 3); // 3 numbers.lastIndexOf(2, 2); // 0 numbers.lastIndexOf(2, -2); // 0 numbers.lastIndexOf(2, -1); // 3 复制代码 十三、every 对数组的每一项都运行给定的函数,每一项都返回 ture,则返回 true function isBigEnough(element, index, array) { return element < 10; } [2, 5, 8, 3, 4].every(isBigEnough); // true 复制代码 十四、some 对数组的每一项都运行给定的函数,任意一项都返回 ture,则返回 true function compare(element, index, array) { return element > 10; } [2, 5, 8, 1, 4].some(compare); // false [12, 5, 8, 1, 4].some(compare); // true 复制代码 十五、filter 对数组的每一项都运行给定的函数,返回 结果为 ture 的项组成的数组 var words = ["spray", "limit", "elite", "exuberant", "destruction", "present", "happy"]; var longWords = words.filter(function(word){ return word.length > 6; }); // Filtered array longWords is ["exuberant", "destruction", "present"] 复制代码 十六、map 对数组的每一项都运行给定的函数,返回每次函数调用的结果组成一个新数组 var numbers = [1, 5, 10, 15]; var doubles = numbers.map(function(x) { return x * 2; }); // doubles is now [2, 10, 20, 30] // numbers is still [1, 5, 10, 15] 复制代码 十七、forEach 数组遍历 const items = ['item1', 'item2', 'item3']; const copy = []; items.forEach(function(item){ copy.push(item) }); 复制代码 ES6新增新操作数组的方法 1、find(): 传入一个回调函数,找到数组中符合当前搜索规则的第一个元素,返回它,并且终止搜索。 const arr = [1, "2", 3, 3, "2"] console.log(arr.find(n => typeof n === "number")) // 1 复制代码 2、findIndex(): 传入一个回调函数,找到数组中符合当前搜索规则的第一个元素,返回它的下标,终止搜索。 const arr = [1, "2", 3, 3, "2"] console.log(arr.findIndex(n => typeof n === "number")) // 0 复制代码 3、fill(): 用新元素替换掉数组内的元素,可以指定替换下标范围。 arr.fill(value, start, end) 复制代码 4、copyWithin(): 选择数组的某个下标,从该位置开始复制数组元素,默认从0开始复制。也可以指定要复制的元素范围。 arr.copyWithin(target, start, end) const arr = [1, 2, 3, 4, 5] console.log(arr.copyWithin(3)) // [1,2,3,1,2] 从下标为3的元素开始,复制数组,所以4, 5被替换成1, 2 const arr1 = [1, 2, 3, 4, 5] console.log(arr1.copyWithin(3, 1)) // [1,2,3,2,3] 从下标为3的元素开始,复制数组,指定复制的第一个元素下标为1,所以4, 5被替换成2, 3 const arr2 = [1, 2, 3, 4, 5] console.log(arr2.copyWithin(3, 1, 2)) // [1,2,3,2,5] 从下标为3的元素开始,复制数组,指定复制的第一个元素下标为1,结束位置为2,所以4被替换成2 复制代码 5、from 将类似数组的对象(array-like object)和可遍历(iterable)的对象转为真正的数组 const bar = ["a", "b", "c"]; Array.from(bar); // ["a", "b", "c"] Array.from('foo'); // ["f", "o", "o"] 复制代码 6、of 用于将一组值,转换为数组。这个方法的主要目的,是弥补数组构造函数 Array() 的不足。因为参数个数的不同,会导致 Array() 的行为有差异。 Array() // [] Array(3) // [, , ,] Array(3, 11, 8) // [3, 11, 8] Array.of(7); // [7] Array.of(1, 2, 3); // [1, 2, 3] Array(7); // [ , , , , , , ] Array(1, 2, 3); // [1, 2, 3] 复制代码 7、entries() 返回迭代器:返回键值对 //数组 const arr = ['a', 'b', 'c']; for(let v of arr.entries()) { console.log(v) } // [0, 'a'] [1, 'b'] [2, 'c'] //Set const arr = new Set(['a', 'b', 'c']); for(let v of arr.entries()) { console.log(v) } // ['a', 'a'] ['b', 'b'] ['c', 'c'] //Map const arr = new Map(); arr.set('a', 'a'); arr.set('b', 'b'); for(let v of arr.entries()) { console.log(v) } // ['a', 'a'] ['b', 'b'] 复制代码 8、values() 返回迭代器:返回键值对的value //数组 const arr = ['a', 'b', 'c']; for(let v of arr.values()) { console.log(v) } //'a' 'b' 'c' //Set const arr = new Set(['a', 'b', 'c']); for(let v of arr.values()) { console.log(v) } // 'a' 'b' 'c' //Map const arr = new Map(); arr.set('a', 'a'); arr.set('b', 'b'); for(let v of arr.values()) { console.log(v) } // 'a' 'b' 复制代码 9、keys() 返回迭代器:返回键值对的key //数组 const arr = ['a', 'b', 'c']; for(let v of arr.keys()) { console.log(v) } // 0 1 2 //Set const arr = new Set(['a', 'b', 'c']); for(let v of arr.keys()) { console.log(v) } // 'a' 'b' 'c' //Map const arr = new Map(); arr.set('a', 'a'); arr.set('b', 'b'); for(let v of arr.keys()) { console.log(v) } // 'a' 'b' 复制代码 10、includes 判断数组中是否存在该元素,参数:查找的值、起始位置,可以替换 ES5 时代的 indexOf 判断方式。indexOf 判断元素是否为 NaN,会判断错误。 var a = [1, 2, 3]; a.includes(2); // true a.includes(4); // false 复制代码 如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star: http://github.crmeb.net/u/defu不胜感激!

优秀的个人博客,低调大师

JavaScript对象与其复制清除方法简析

var obj{属性1:属性值1, // 属性名=>key 不能重复属性2:属性值2, // 属性值=>value 是该属性的唯一值 (键值对数据 键=>key 值=>value 有键必有值)} varobj{a:1,b:2,c:3, }console.log(obj.a);//打印对象obj下属性a的value值123456 obj.d=obj.a + obj.b; // 创建并给obj的d属性赋值,不需要var document.write(); console.log(); // 带括号的 => 函数(方法)input.value; // 不带括号 => 属性 obj [“a”]=30; // obj [ key ]=value; 等价于 obj . a =30; (点语法内不能使用变量,不加引号) varnames="a";varv=20;varobj={ [names]:v }12345 属性名就是字符串var obj={a:v}当属性名是变量时,需要[]将变量包含[ ] 内key要求属性名必须是字符型或symbol型,所以必须要有 " "凡是字符,加了"“就是字符类型的字符串,不加”“就是变量名只有在对象中属性名特殊,没有”"的属性名是字符串,有[]的属性名是变量 vara="ab";varb=9; obj[a]=30;//a是一个变量,相当于将"ab"字符串作为obj的属性名obj[b]=20;//如果变量内的值不是字符型,则会隐式转换成字符型作为属性名将变量b中的数字9隐式转换为字符“9”并作为obj的属性名console.log(obj.c);//obj对象内没有c属性,打印结果为undefined varobj={};varo={a:1}; obj[o]=20;varo1={a:3};console.log(obj[o1]);//o和o1是变量,被带入时转换为字符串[objectObject];20 console.log(obj.o1);//o1是字符,obj没有o1的属性;undefinedvarn;varm; obj[n]=10;console.log(obj[m]);//打印结果为1012345678910111213141516171819 因为变量n为undefined,隐式转换成字符“undefined”,obj[n] =>obj[“undefined”] =10obj[m] => obj[“undefined”]对象被强转为字符串会变成 " [ object object ] " 栈、堆栈数据读取写入速度快,但存储内容较少堆读取和写入速度慢,但存储内容多字符型,数值型,布尔型,undefined 都存在栈中对象,函数存在堆中当点击对象前面的箭头时,才去堆中对应的地址取出数据引用地址就是指堆中对象存储的地址 varo={a:1};varo1=o;//将o对象的引用地址赋值给o1 o1.a=10;//因为o1和o是同一个对象,因此修改o1的属性就相当于修改了o的属性 console.log(o);//10varo={a:1};varo1=o; o={b:2};//重新改变新地址,o1与o不指向同一个地址 o.a=20;console.log(o1);//{a:1} console.log(o);//{b:2,a:20}1234567891011 内存泄漏当对象不再使用,但对象的引用列表中并没有清除引用关系时,对象依旧会存在于堆中,占用内存,不会被垃圾回收车回收,造成内存泄漏对象被存储在堆中,如果堆中对象不断增加就会造成卡顿对于处理内存中不需要的数据,我们叫做垃圾回收当设置变量为null,可以将该对象引用列表中这个引用变量清除当垃圾回收车过来的时候发现堆中该对象引用列表是空的时候就会将其清除而栈中数据,一旦该变量不再使用,就会被清理掉 vari={a:1};//变量i内存放着对象{a:1}的地址varj=i;//变量j内也存着对象{a:1}的地址变量i和j都指向对象{a:1}//如果此时,想要给变量j重新赋值,则先需要在对象{a:1}的引用地址中删除j对这个对象的引用,在重新赋值i=null;//取消引用,释放对象占用的内存i=2;//重新赋值varobj={a:1,b:2,c:3,d:4,e:undefined }console.log("e"inobj);//判断e是不是obj的属性名;true1234567891011121314 遍历复制对象 varo={f:10,g:20};for(varpropinobj){ o[prop]=obj[prop]; }console.log(o);12345 js中的对象遍历是根据对象属性添加的先后来遍历,对象遍历是有顺序的 Object.assign()方法复制对象 varo={f:10,g:20};varobj={} o=Object.assign(o,obj);console.log(o);1234 JSON方法复制对象 varstr=JSON.stringify(obj);console.log(str);12 这种固定样式类型的字符串,叫做JSON字符串,JSON类型 varobj={b:2}console.log(obj);//{b:2},展开后a:1100;b:2; varstr=JSON.stringify(obj); console.log(str); obj.a=10; obj.a++; obj.a*=100;vars='{"b":2}';varo=JSON.parse(s);//将JSON字符串转换为对象 console.log(o);//{b:2}1234567891011 浅复制与深复制 varobj={a:1,b:2,c:{d:10,e:20 } }//浅复制 varo1={};for(varpropinobj){ o1[prop]=obj[prop]; }varo1=obj; obj.a=10; obj.c.d=100;console.log(o1,obj);//obj与o1一起改变 //深复制 varo1=JSON.parse(JSON.stringify(obj));//先转化为JSON字符串,然后再转换为对象进行复制 obj.c.d=100;console.log(o1,obj);//改变obj不会影响O1123456789101112131415161718192021 对象清除 varo={a:1}; o.b=10;deleteo.a;//删除属性 console.log(o);{b:10}

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册