专栏首页前端之攻略JavaScript 数组总结 原

JavaScript 数组总结 原

JavaScript没有明确的数组数据类型,但是外面可以通过使用内置Array对象和它的方法对数组进行操作,Array对象有很多操作数组的方法,比如 合并,反转 ,排序,数组对象有一个决定数组长度和使用正则表达式操作其他属性的属性,你可以分配length属性,写一个小于数组元素变量的值会缩短数组本身,写0会彻底清空数组

var cats = ['Dusty', 'Misty', 'Twiggy']; console.log(cats.length); // 3 cats.length = 2; console.log(cats); // logs "Dusty,Misty" - Twiggy has been removed cats.length = 0; console.log(cats); // logs nothing; the cats array is empty cats.length = 3; console.log(cats); // [undefined, undefined, undefined]

遍历数组

var colors = ['red', 'green', 'blue']; for (var i = 0; i < colors.length; i++) {   console.log(colors[i]); } 如果你确定数组中没有一个元素的求值是false —— 如果你的数组只包含DOM节点,如下,你可以选择一个更高效的土法子: var divs = document.getElementsByTagName('div'); for (var i = 0, div; div = divs[i]; i++) {   /* Process div in some way */ } 这样避免了检测数组长度的开销,额外的好处是确保了div变量当前在每次循环中都被重新赋值为当前项。 

forEach()方法提供了遍历数组元素的其它方法 var colors=['red', 'green', 'blue']; colors.forEach(function(color){ console.log(color); //color要写或其他的名字也行,但不能为空 }); 被传递给forEach的函数会在数组的每个元素像上执行一次,元素作为参数传递给该函数。未赋值的值不会在forEach循环迭代。 注意,在数组定义时省略的元素不会在forEach遍历时被列出,但是手动赋值为undefined的元素是会被列出的:

数组的方法 concat()连接两个数组并返回一个新的数组

var myArray=new Array("1","2","3"); myArray=myArray.concat("a", "b", "c"); myArray is now["1","2","3","a", "b", "c"]  如果 var myArray=new Array("1","2","3"); myArray1=myArray.concat("a", "b", "c");  // myArray ["1","2","3"]   myArray1 ["1","2","3","a", "b", "c"]  

join()将数组的所有元素连接成一个字符串 

var myArray=new Array("Wind", "Rain", "Fire"); var list=myArray.join("-")  // list is "Wind-Rain-Fire"

push()在数组末尾添加一个或多个元素,并返回数组 操作后的长度

var myArray = new Array("1", "2"); myArray.push("3"); // myArray is now ["1", "2", "3"]

pop()从数组移出最后一个元素,并返回该元素

var myArray = new Array("1", "2", "3"); var last = myArray.pop();  // myArray is now ["1", "2"], last = "3"

shift()从数组移出第一个元素,并返回该元素

var myArray = new Array ("1", "2", "3"); var first = myArray.shift();  // myArray is now ["2", "3"], first is "1"

unshift()在数组开头添加一个或者多个元素,并返回数组的新长度

var myArray = new Array ("1", "2", "3"); myArray.unshift("4", "5");  // myArray becomes ["4", "5", "1", "2", "3"]

slice()从数组提取一个片段,并作为一个新数组返回 

var myArray = new Array ("a", "b", "c", "d", "e"); myArray1 = myArray.slice(1, 4); // starts at index 1 and extracts all elements                                // until index 3,不包含4, returning [ "b", "c", "d"]

splice(添加或删除的位置,数量,增加的元素)从数组移出一些元素(可选)并替换他们

在数组的第2位置添加一个元素 - splice() var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(2,0,"Lemon","Kiwi"); Banana,Orange,Lemon,Kiwi,Apple,Mango

reverse()颠倒数组元素的顺序,第一个变成最后一个,最后一个变成第一个

var myArray = new Array ("1", "2", "3"); myArray.reverse();  // transposes the array so that myArray = [ "3", "2", "1" ]

sort() 给数组元素排序。 var myArray = new Array("Wind", "Rain", "Fire"); myArray.sort(); //按字母顺序升序 // sorts the array so that myArray = [ "Fire", "Rain", "Wind" ] sort()也可以带一个回调函数来决定怎么比较数组元素,这个回调函数比较2个值,并返回3个值中的一个 var points = [40,100,1,5,25,10]; points.sort(function(a,b){return a-b});//数字升序排列数组, 解释:第一次比较第一个与第二个数(a(40)与b(100)),a-b为负数,则位置不变,若a-b为正数则位置交换,然后比较第一个和第三个,依次比较到第一个与最后一个,第二轮,第二个与第三个开始比较,第二个与第四个比较,直到第二个与最后一个,然后第三轮。。。 这种排序方法叫做冒泡排序 var points = [40,100,1,5,25,10]; points.sort(function(a,b){return b-a});//数字降序排列数组

例如,下面的代码通过字符串的最后一个字母进行排序: var sortFn = function(a, b){   if (a[a.length - 1] < b[b.length - 1]) return -1;   if (a[a.length - 1] > b[b.length - 1]) return 1;   if (a[a.length - 1] == b[b.length - 1]) return 0; } myArray.sort(sortFn);  // sorts the array so that myArray = ["Wind","Fire","Rain"] 如果 a 小于 b ,返回 -1(或任何负数) 如果 a 大于 b ,返回 1 (或任何正数) 如果 a 和 b 相等,返回 0。

indexOf(选择元素,开始位置)

var a = ['a', 'b', 'a', 'b', 'a']; console.log(a.indexOf('b')); // logs 1 // Now try again, starting from after the last match console.log(a.indexOf('b', 2)); // logs 3 console.log(a.indexOf('z')); // logs -1,

laseIndexOf(选择元素,开始位置)和indexOf差不多,但是从结尾开始,并且是反向搜索

var a = ['a', 'b', 'c', 'd', 'a', 'b']; console.log(a.lastIndexOf('b')); // logs 5 // Now try again, starting from before the last match console.log(a.lastIndexOf('b', 4)); // logs 1

map(callback[, thisObject]) 也就是遍历数组,并通过callback对数组元素进行操作,并将所要操作结果放入数组中并返回该数组

var a1=["a","b","c"]; var a2=a1.map(function(item){return item.toUpperCase();}); console.log(a2);// a2 ["A","B","C"]

filter(callback[, thisObject]) 返回一个所有在回调函数上返回true的元素的新数组

var a1 = ['a', 10, 'b', 20, 'c', 30]; var a2=a1.filter(function(item){return typeof itme=="number";}); // a2[10,20,30]

every(callback[, thisObject])  当数组中每个元素在callback上被返回true时就返回true,功能类似filter,只不过 功能是判断是不是数组中的所有元素都符号条件,并且返回的是bool值

function isNumber(value){   return typeof value == 'number'; } var a1 = [1, 2, 3]; console.log(a1.every(isNumber)); // logs true var a2 = [1, '2', 3]; console.log(a2.every(isNumber)); // logs false

some(callback[, thisObject]) 只要数组中有一项在callback上被返回true,就返回true。

function isNumber(value){   return typeof value == 'number'; } var a1 = [1, 2, 3]; console.log(a1.some(isNumber)); // logs true var a2 = [1, '2', 3]; console.log(a2.some(isNumber)); // logs true var a3 = ['1', '2', '3']; console.log(a3.some(isNumber)); // logs false

以下代码创建了一个二维数组.

var a = []; for (i = 0; i < 4; i++) {   a[i] = [];   for (j = 0; j < 4; j++) {     a[i][j] = "[" + i + "," + j + "]";   } }

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • threejs之显示Label-CSS2DRenderer

    1、采用threeJs的精灵(Sprite),具体用法查看我另一篇博客https://my.oschina.net/u/2612473/blog/3038066...

    tianyawhl
  • JavaScript中浅拷贝和深拷贝的区别和实现

    要理解 JavaScript中浅拷贝和深拷贝的区别,首先要明白JavaScript的数据类型

    tianyawhl
  • js实现千位分隔符 原

    \b      :用来匹配单词的边界,大小写字母、数字、下划线可以组成单词的字符,这些字符和其它字符相邻则为单词边界 如abcd@ , d与@之间就可以用\b...

    tianyawhl
  • 简写js的积累

    写js的时候,有很多小技巧可以让我们的代码更整洁,只是我们都不注意积累,先上几个自己平时用的,以后慢慢积累。

    wade
  • html页面显示服务器时间

    lblTimer = $("#lbltimer"); d = new Date('<%=DateTime.Now.ToString("yyyy...

    冰封一夏
  • tensorsor快速获取所有变量,和快速计算L2范数

    可以指定要的变量,计算L2范数。 for var in tf.trainable_variables(): print (var.nam...

    MachineLP
  • 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接

    async用来表示函数是异步的,定义的函数会返回一个promise对象,可以使用then方法添加回调函数。

    Jerry Wang
  • 字节跳动前端实习面经

    viewport 是用户网页的可视区域。 手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,...

    星辉
  • MariaDB MySQL变量取值避免四舍五入的方法

    在一些对数据精确度要求比较高的场景(比如资金结算)下,变量取值时不能对变量值进行四舍五入操作,这时候就要做些预处理工作。

    授客
  • 纯粹依靠位操作实现整数加法运算

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券