二维数组
js中只支持一维数组,但是可以通过在数组中保存数组的方式,可以创建二维数组。上创建二维的通用代码。
Array.matix = function (rowsNum, colsNum, init) {
var arr = []
for (let i = 0; i < rowsNum; ++i) {
var initArr = []
for (let j = 0; j < colsNum; ++i) {
initArr[j] = init
}
arr[i] = initArr
}
}
var grades = [
[12, 19, 10],
[22, 11, 11],
[77, 77, 77]
]
console.log(grades[0][0])//12
例如分数就是上面的数据,每行就是一个学生的成绩,我现在想得到每个学生的总分和平均分
let totalNum = 0
let average=0
for (let i = 0; i < grades.length; i += 1) {
for (let j = 0; j < grades[i].length; j += 1) {
totalNum += grades[i][j]
}
average = totalNum / grades[i].length
console.log(`NO.${i + 1}的总分为:${totalNum}平均分为:${average.toFixed(2)}`)
totalNum = 0
average=0
}
NO.1的总分为:41平均分为:13.67
NO.2的总分为:44平均分为:14.67
NO.3的总分为:231平均分为:77.00
对象数组
在对象中,可以使用数组存储复杂的数据,
function Point(x,y) {
this.x=x
this.y=y
}
function displayPts(arr) {
for (let i=0;i<arr.length;i+=1){
console.log('x:',arr[i].x,',y:',arr[i].y)
}
}
var p1=new Point(1,2)
//new Fun以后,p1会生成自己的数据块 =》p1:{x:1,y:2}
var p2=new Point(3,4)
var p3=new Point(5,6)
var p4=new Point(7,8)
var points=[p1,p2,p3,p4]
for (let i=0;i<points.length;i+=1){
console.log(`${i+1}:x${points[i].x},y${points[i].y}`)
}
/*
1:x1,y2
2:x3,y4
3:x5,y6
4:x7,y8
*/
var p5=new Point(12,3)
points.push(p5)
displayPts(points)
/*
x: 1 ,y: 2
x: 3 ,y: 4
x: 5 ,y: 6
x: 7 ,y: 8
x: 12 ,y: 3*/
对象中的数组
我觉得该案例是教会我一个基本的面向对象的思想。将方法继承。
案例:根据导入的数字,求出平均值。
function weekTemps() {
this.dataSource = []
this.add = add
this.average = average
}
function add(temp) {
this.dataSource.push(temp)
}
function average() {
var total = 0
for (let i = 0; i < this.dataSource.length; i += 1) {
total += this.dataSource[i]
}
return total / this.dataSource.length
}
var thisWeek = new weekTemps()
thisWeek.add(11)
thisWeek.add(111)
thisWeek.add(11)
console.log(thisWeek.average())
网友评论