数组
顾名思义,数组就是保存一组数据的集合。(具有相同类型的数据)
如: var name1 ='小红',
name2 ='小明',
name3 ='狗蛋';
//存储一组数据(数组)
var arry =['小红','小明','狗蛋'];
//打印一下
alert(arry);
//也可以单独拿出来
alert(arry[2]);
可以看到里面数组也是从0开始,对应小红,1,2…依次往下对应。
下面自然就是遍历数组:
还是用for循环遍历
var arry =['小红','小明','狗蛋'];
for (var i=0; i<=2; i++){
console.log(arry[i]);
}
遍历下一步自然就是取值:
前面我们说的012就是下标,数组[下标]就能取到了。
var arry=['小明'…]后面一直加数据,i<=后的数也一直改,很麻烦。
可以用数组长度代替——arry.length,这个是从1开始计数,三个数据长度就是3,所以,i<arry.length,下标还是一样,从0开始:
var arry =['小红','小明','狗蛋'];
for (var i=0; i<arry.length; i++){
console.log(arry[i]);
}
如果用<=,有个数据不存在,它找不到:
数组添加,删除数据& for in & for of
//添加数据
//数组名.push(值);加在数组的最后面
var nums =[1,2,3,4,5];
nums.push(999);
console.log(nums);
//数组名.unshift放在数组最前面
var nums =[1,2,3,4,5];
nums.unshift(999);
console.log(nums);
//删除值
//数组名.splice(a,b);a:从a下标的位置开始删除,b:删除b 个。
var nums =[1,2,3,4,5];
nums.splice(2,2);
console.log(nums);
//for in增强型for循环,取数组下标
var nums =[1,2,3,4,5];
for (var i in nums){
console.log(i); //取下标
console.log(nums[i]);//遍历
}
白色的我们取的下标,下面的是对应的值。
//for of直接取值
var nums =[1,2,3,4,5];
for (var i of nums){
console.log(i); //直接取值
}
正好前面刚说了删除值,那如果我们要处理的数据中有很多重复的数据我们要去除怎么办?
双重for循环数组去重
var nums =[1,1,2,2,3,3,4,4];
for (var i=0; i<nums.length; i++){
for (var j=i+1; j<nums.length; j++){
if (nums[i]==nums[j]){
nums.splice(j,1)
j--;//去重后数组向前顶了一位,怕遗漏所以要从删掉的这一位开始。
}
}
}
console.log(nums);
最后一个练习:用*写等腰三角形
<script>
for (var i=1; i<=5; i++){
for (var j=0; j<2*i-1; j++){
//因为第一行1个*,第二层三个,*的个数是行数的两倍减一,i就是行数,所以j要循环2*i-1次
document.write('*');
}
//每循环一次换行
document.write('<br>')
}
</script>
好,出来了,但这也不是等腰三角形啊,那咋整,有个简单的方法,直接在head中用样式设置:
<style>
body{
text-align: center;
}
</style>
那我就不,不想用style直接打出一个,好。
for (var i=1; i<=5; i++){
for (var j=1; j<5-i; j++){
document.write('#');
}
for (var k=1; k<=2*i-1; k++){
document.write('*');
}
//每循环一次换行
document.write('<br>')
}
我们多加个循环,将每一行前面用#补全
循环多少次也是找找关系,比较简单,那再把#换成空格 是不是就行了
正好双循环顺便再练一下,好,就这样。