数组是一组类型相同的数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。
通过一个下标就可以确定数组元素的位置。
var arr = new Array(4)
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
var arr = [1,2,3,4]
数组元素的访问:通过索引(下标)来访问
数组长度 = 数组索引 + 1
通过两个下标(行下标、列下标)来确定一个数组元素。
var arr = new Array(
new Array(11,22,33),
new Array(44,55,66)
)
var arr = [[11,22,33],[44,55,66]]
js中不允许有锯齿状数组,即如果第二行比第一行少一个,会按现有个数显示,访问该元素会显示 undefined
数组名[下标1][下标2]
将一个数组中所有数值为0的元素删除。
思路:
建立新数组,将不为0的元素复制过去
var arr = [2,0,6,1,77,0,52,0,25,7]
var newArr = []
for(var i = 0 ; i<arr.length;i++)
{
if(arr[i] != 0)
{
newArr[newArr.length] = arr[i]
}
}
console.log(newArr)
将一个数组中所有元素的顺序反过来。
思路:
通过数组下标进行互换
var arr = [23,78,12,45,89,90]
var tep
for(var i=0;i<arr.length/2;i++)
{
tep = arr[i]
arr[i] = arr[arr.length-1-i]
arr[arr.length-1-i] = tep
}
console.log(arr)
思路:
建立一个新数组,将原数组的元素复制过去
var arr = [23,78,12,45,89,90]
var newArr = []
for(var i = arr.length-1;i>=0;i--)
{
newArr[newArr.length] = arr[i]
}
arr = newArr
console.log(arr)
思路:
通过数组下标进行互换
var arr = [23,78,12,45,89,90]
var i = 0
var j = arr.length-1
while(i<j)
{
var temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
i++
j--
}
console.log(arr)
找出一个二维数组中每行元素的最大值。
//定义一个二维数组
var arr = [
[45,78,32,10],
[12,0,61,39],
[5,-11,36,55]
]
//找最大值
for(var m=0;m<arr.length;m++)
{
var max = arr[m][0]
for(var n=1;n<arr[m].length;n++)
{
if(max<arr[m][n])
{
max = arr[m][n]
}
}
console.log((m+1) + ':' + max)
}
定义一个3×3的数组 输出每行、每列、对角线元素之和。
//定义一个3×3的数组
var arr = [
[1,2,3],
[4,5,6],
[7,8,9]
]
//计算每行、每列的和
for(var i=0;i<arr.length;i++) //确定控制行
{
var sum1 = 0 //行
var sum3 = 0 //列
for(var j=0;j<arr[i].length;j++) //确定控制列
{
sum1 += arr[i][j]
sum3 += arr[j][i] //内循环进行的快 内循环控制列的时候 竖着走的
}
console.log('第' + (i+1) + '行' + '=' + sum1)
console.log('第' + (i+1) + '列' + '=' + sum3)
}
//正方形有对角线
var sum2 = 0 //正对角线
var sum4 = 0 //反对角线
for(var m=0;m<arr.length;m++)
{
sum2 += arr[m][m]
sum4 += arr[m][arr.length-m-1] //一个下标是最大值时另一个是最小
}
console.log(sum2)
console.log(sum4)
将一个二维数组转置。
//数组转置 四行三列 ---> 三行四列
var arr = [
['a','b','c'],
['d','e','f'],
['g','h','i'],
['j','k','l']
]
var res = []
for(var i=0;i<arr[0].length;i++)
{
res[i] = []
for(var j=0;j<arr.length;j++)
{
res[i][j] = arr[j][i]
}
}
console.log(res)
让一个二维数组的每行元素都是降序排列的。
var arr = [
[23,14,56,45,34],
[7,89,34,54,57]
]
for(var h=0;h<arr.length;h++)
{
for(var i=0;i<arr[h].length-1;i++) //外循环是循环个数减一个
{
for(var j=0;j<arr[h].length-1-i;j++) //内循环是循环个数减1减i个 是最少次数的循环
{
if(arr[h][j]<arr[h][j+1])
{
var tmp = arr[h][j]
arr[h][j] = arr[h][j+1]
arr[h][j+1] = tmp
}
}
}
}
var arr = [
[23,14,56,45,34],
[7,89,34,54,57]
]
for(var h=0;h<arr.length;h++) //二维数组需要排两行的序
{
for(var i=0;i<arr[h].length-1;i++) //降序 循环n-1趟数找出最大的放前面
{
var max = arr[h][i]
var t = i
for(var j=i+1;j<arr[h].length;j++) //拿设置好的max和每个作比较 找出最大的
{
if(max < arr[h][j])
{
max = arr[h][j]
t = j
}
}
if(t != i) //当max和预设的值下标不一致时 互换位置
{
var tmp = arr[h][i]
arr[h][i] = arr[h][t]
arr[h][t] = tmp
}
}
}
console.log(arr)