快捷搜索:

javascript数组的运用,呼之欲出array

作者: w88官方网站手机版  发布:2019-08-24

例如:

javascript中活灵活现的Array对象详解,活灵活现array

前言

JavaScript中的Array对象,就是我们常说的数组对象,主要用于封装多个任意类型的数据,并对它们进行管理。

所有主流浏览器均支持Array对象。

大家都知道Array实例有这四个方法:push、pop、shift、unshift。大家也都知道 push pop实现栈, shift push实现队列。在这里不讨论什么先进后出、先进先出。

但一面这个题将要用到这几个方法。

题目

螺旋矩阵这个名词,在后台语言中可能很熟悉,他是个二维数组,他有什么特点呢?请看下图:

图片 1

以上是一个从外到内的螺旋矩阵,他的排列规则是从外围开始走,一圈一圈绕道最里面,就像一条盘旋着的蛇。

分析与解答

进入正题,今年9月份腾讯校招在线笔试题就有一个螺旋矩阵的 题,传入给定数字n,打印出n*n的螺旋矩阵,当时本菜鸟并没有做出来,时间过后自己在电脑上想,然后恍然大悟明白的其中的奥妙。

虽然博主没有记录当时的代码,但是我是首先定义了个n*n的二维数组,得到需要绕几层,比如上面的是2层,然后就循环几次,在内部用四个for循环,分别是上下左右给定义的二维数组插内容,具体的代码就没法上了,反正方法很笨,而且并不是本文章的重点,下面进入本章主题:

前几天我在codewars上做题,遇到了个螺旋矩阵的题,它是要求写一个函数,给定一个矩阵二维数组参数,返回一个数组,该数组的元素顺序就是螺旋矩阵的路径。

例如:

function getLinear (spiral) {
 //...做一些操作 
}

var arr = [
 [1,2,3],
 [4,5,6],
 [7,8,9]
]

getLinear(arr) // 返回 [1,2,3,6,9,8,7,4,5]

上面例子清除的看到getLinear函数是将传入的‘螺旋矩阵'用一维数组按顺序输出了(我也不知道怎么说了,反正就是把这个二维数组像蛇一样盘旋着形成一维数组)

看到这个题的第一时间,我就想起了腾讯校招的那个题, 然后博主就用类似的四个for循环写完了,然后提交。这个网站有个功能是,你做完题目可以看别人做的代码,博主小心翼翼的点开答案列表,哇,第一条就深深吸引了我。虽然不记得别人写的源码,但大致是这样的:

function getLinear(spiral) {

  var item;

  var linear = []

  while (item = spiral.shift()) {
  // 上
  linear = linear.concat(item)

  // 右
  for (var i = 0; i < spiral.length; i  ) {
   linear.push( spiral[i].pop() )
  }

  // 下
  linear = linear.concat( spiral.pop().reverse())

  // 左
  for (var i = spiral.length - 1; i >= 0; i --) {
   linear.push(spiral[i].shift())
  }

  }
  return linear
 }

对于菜鸟级别的我来说,刚开始还有点懵,因为跟我的思维不一样,看了一会才发现其中的奥妙。相比我写的真是好多了,这个代码不需要考虑传入的是否为n*n数组,他可以解析任意数组比如2*3数组等。

而且代码绝对简洁,对于有一定基础的来说也很容易懂。

如果你有些困惑,就往下看,我的图文解释

// 上
 linear = linear.concat(item)

item为二维数组的第一个元素,就是第一个数组,将它移除数组并返回,如下:

图片 2

此行代码后,原数组变成如下:

图片 3

接下来,我们需要将 5 6 7 加入要返回的数组中,也就是二维数组的每个数组元素的最后一个元素,我们可以用pop获取到:

// 右
  for (var i = 0; i < spiral.length; i  ) {
   linear.push( spiral[i].pop() )
  }

这时原来的二维数组变成了如下:

图片 4

接下来我们要拿到最后一行 10 9 8 并倒置,将二维数组pop出最后一个数组然后将他reverse就可以了

// 下
 linear = linear.concat(spiral.pop().reverse())

此时原来二维数组是这样的:

图片 5

获取左边的就跟右边类似,只需要将pop变成shift:

// 左
for (var i = spiral.length - 1; i >= 0; i --) {
 linear.push(spiral[i].shift())
}

原来二维数组变为:

图片 6

此时,一圈就完了,然后while判断是否进入下一圈。

总结

好了,本文的内容就到这里了,一个看上去不简单的题目,在Array的灵活下变得如此简单,希望本文的内容对各位js新手们能有所帮助,如果有疑问大家可以留言交流。

前言 JavaScript中的Array对象,就是我们常说的数组对象,主要用于封装多个任意类型的数据...

复制代码 代码如下:

您可能感兴趣的文章:

  • 以JSON形式将JS中Array对象数组传至后台的方法
  • JavaScript 判断判断某个对象是Object还是一个Array
  • js中判断Object、Array、Function等引用类型对象是否相等
  • JavaScript数组Array对象增加和删除元素方法总结
  • Javascript中判断变量是数组还是对象(array还是object)
  • javascript Array对象使用小结
  • JScript内置对象Array中元素的删除方法
  • js Array对象的扩展函数代码
  • JavaScript中Array 对象相关的几个方法
  • JavaScript中的Array对象使用说明

  * 负值,如果所传递的第一个参数比第二个参数小。
  * 零,如果两个参数相等。
  * 正值,如果第一个参数比第二个参数大

原来二维数组变为:

**javascript 数组排序:

前几天我在codewars上做题,遇到了个螺旋矩阵的题,它是要求写一个函数,给定一个矩阵二维数组参数,返回一个数组,该数组的元素顺序就是螺旋矩阵的路径。

复制代码 代码如下:

图片 7

您可能感兴趣的文章:

  • javascript数组使用调用方法汇总
  • js数组Array sort方法使用深入分析
  • 使用indexOf等在JavaScript的数组中进行元素查找和替换
  • 使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
  • javaScript array(数组)使用字符串作为数组下标的方法
  • 使用js判断数组中是否包含某一元素(类似于php中的in_array())
  • js使用for循环查询数组中是否存在某个值
  • JavaScript数组函数unshift、shift、pop、push使用实例
  • js使用Array.prototype.sort()对数组对象排序的方法
  • Javascript基础之数组的使用
  • JavaScript Array 对象参考手册

总结

或者另一种写法:

function getLinear (spiral) {
 //...做一些操作 
}

var arr = [
 [1,2,3],
 [4,5,6],
 [7,8,9]
]

getLinear(arr) // 返回 [1,2,3,6,9,8,7,4,5]

arr=new Array();
for(i=0;i<100;i ) {
   arr[i]=new Array(...);
}

此时原来二维数组是这样的:

方法1.

如果你有些困惑,就往下看,我的图文解释

举例:

此时,一圈就完了,然后while判断是否进入下一圈。

常用函数:

所有主流浏览器均支持Array对象。

javascript二维数组:

虽然博主没有记录当时的代码,但是我是首先定义了个n*n的二维数组,得到需要绕几层,比如上面的是2层,然后就循环几次,在内部用四个for循环,分别是上下左右给定义的二维数组插内容,具体的代码就没法上了,反正方法很笨,而且并不是本文章的重点,下面进入本章主题:

定义和初始化一起:

function getLinear(spiral) {

  var item;

  var linear = []

  while (item = spiral.shift()) {
  // 上
  linear = linear.concat(item)

  // 右
  for (var i = 0; i < spiral.length; i  ) {
   linear.push( spiral[i].pop() )
  }

  // 下
  linear = linear.concat( spiral.pop().reverse())

  // 左
  for (var i = spiral.length - 1; i >= 0; i --) {
   linear.push(spiral[i].shift())
  }

  }
  return linear
 }

var arr = new Array(['a','b','c'],['d','e','f']);  
arr[0]返回第一个一维数组,arr[0][0]返回第一个一维数组的第一个元素'a',下同。

JavaScript中的Array对象,就是我们常说的数组对象,主要用于封装多个任意类型的数据,并对它们进行管理。

var testArray=[1,5,2,3,6,4]
testArray.sort(function(a,b){return a-b;});
alert(testArray);

以上是一个从外到内的螺旋矩阵,他的排列规则是从外围开始走,一圈一圈绕道最里面,就像一条盘旋着的蛇。

参数

好了,本文的内容就到这里了,一个看上去不简单的题目,在Array的灵活下变得如此简单,希望本文的内容对各位js新手们能有所帮助,如果有疑问大家可以留言交流。

var arr=new Array(
  new Array(),
  new Array(),
  new Array()
  );

这时原来的二维数组变成了如下:

数组常用函数

前言

方法2.

// 上
 linear = linear.concat(item)

var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"

题目

javascript的数组不需要设定长度,会自己进行扩展,数组名.length返回元素个数

分析与解答

var mycars=new Array("Saab","Volvo","BMW")

接下来我们要拿到最后一行 10 9 8 并倒置,将二维数组pop出最后一个数组然后将他reverse就可以了

方法2.

但一面这个题将要用到这几个方法。

数组的定义:

// 右
  for (var i = 0; i < spiral.length; i  ) {
   linear.push( spiral[i].pop() )
  }

方法1.

item为二维数组的第一个元素,就是第一个数组,将它移除数组并返回,如下:

方法3.

接下来,我们需要将 5 6 7 加入要返回的数组中,也就是二维数组的每个数组元素的最后一个元素,我们可以用pop获取到:

arrayObj
  数组
sortFunction
  可选项。比较函数。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
   比较函数必须返回下列值之一:

螺旋矩阵这个名词,在后台语言中可能很熟悉,他是个二维数组,他有什么特点呢?请看下图:

复制代码 代码如下:

图片 8

var mycars=["Saab","Volvo","BMW"];

看到这个题的第一时间,我就想起了腾讯校招的那个题, 然后博主就用类似的四个for循环写完了,然后提交。这个网站有个功能是,你做完题目可以看别人做的代码,博主小心翼翼的点开答案列表,哇,第一条就深深吸引了我。虽然不记得别人写的源码,但大致是这样的:

javascript用一维数组来模拟二维数组:

此行代码后,原数组变成如下:

toString():把数组转换成一个字符串
toLocaleString():把数组转换成一个字符串
join():把数组转换成一个用符号连接的字符串
shift():将数组头部的一个元素移出
unshift():在数组的头部插入一个元素
pop():从数组尾部删除一个元素
push():把一个元素添加到数组的尾部
concat():给数组添加元素
slice():返回数组的部分
reverse():将数组反向排序
sort():对数组进行排序操作
splice():插入、删除或者替换一个数组元素

图片 9

**arrayobj.sort(sortfunction)

大家都知道Array实例有这四个方法:push、pop、shift、unshift。大家也都知道 push pop实现栈, shift push实现队列。在这里不讨论什么先进后出、先进先出。

数组长度:

进入正题,今年9月份腾讯校招在线笔试题就有一个螺旋矩阵的 题,传入给定数字n,打印出n*n的螺旋矩阵,当时本菜鸟并没有做出来,时间过后自己在电脑上想,然后恍然大悟明白的其中的奥妙。

对于菜鸟级别的我来说,刚开始还有点懵,因为跟我的思维不一样,看了一会才发现其中的奥妙。相比我写的真是好多了,这个代码不需要考虑传入的是否为n*n数组,他可以解析任意数组比如2*3数组等。

图片 10

图片 11

上面例子清除的看到getLinear函数是将传入的‘螺旋矩阵'用一维数组按顺序输出了(我也不知道怎么说了,反正就是把这个二维数组像蛇一样盘旋着形成一维数组)

而且代码绝对简洁,对于有一定基础的来说也很容易懂。

获取左边的就跟右边类似,只需要将pop变成shift:

// 下
 linear = linear.concat(spiral.pop().reverse())
// 左
for (var i = spiral.length - 1; i >= 0; i --) {
 linear.push(spiral[i].shift())
}

图片 12

本文由www.w88985.com发布于w88官方网站手机版,转载请注明出处:javascript数组的运用,呼之欲出array

关键词: www.w88985.c