【js数组实践】学了大半年的js,等到要慢慢开始实践的时候却发现js数组基本上一点都不会,js 数组是什么?耗费了三天的时间我终于是先将js数组进行一个初略的复习,然后以实践为主重学了js 数组。下面我就将我小小整理了一番的js数组实践代码和笔记和大家一起交流下,不过求别吐槽。

一、js数组的概念理解
以前学c语言的时候也学过数组,好像c语言数组最常用的定义方式就是(int text[5];)吧,虽然现在我们还没有学到c#,java那些,但是听说他们数组的定义方式和c语言比较类似,都是先数据类型,再数组名给数组分配大小空间吧(在js老师上js数组课的时候模模糊糊听到了)所以相比其他的语言,js的定义真的是太不严谨了,一个var就可以定义所有,这还包括了数组。不过好说js中还会有数组吧,不然你遇到大量的数据需要读取的时候,难道一个变量一个变量的去弄?那样只怕用复制粘贴也有可能会点得双手发麻吧。
上面是我对js里面的数组概念的理解,如果要我单纯地说手数组是什么的话,我认为数组就是一个酒店,酒店里面有很多类似的房子,如果在其他的语言里面这些房子就会分为普通房,标准房,贵宾房,至尊房,不过在js里面,所有的房子的用途就全是一样,没有什么区别了。因此js数据元素就好像一个大杂烩酒馆,什么样的人都可以进去,这些人就是我们平常所说的数据类型,变量之类的。有了数组这么一个大酒店,人们就不用露宿街头在街头各自占据一个空间了。这个对数组的里面虽然不太专业,但是貌似还是很好理解的。下面就是我的js数组实践了,希望大家可以和我多多交流。。
1、定义js数组var textarray=new array(3); //因为学c语言的时候有些习惯了,所以我一般也就只记得这种数组的定义方式
textarray[0]=123456;//给一个js数组元素一个数值型的值
textarray[1]='character';//给第二个元素一个字符型型的值
textarray[2]=ture;//给第三个数组元素一个boolean型的值
|
<html>
<head>
<title>js数组定义实践练习</title>
<script language="javascript">
{
var text=new array(20);
for(var i=0;i<20;i++)
{
text[i]=2*i+1;
docutment.write("现在的值是"+array[i]);
}
}
</script>
</body>
</head>
</html>
|
var otherarray=new array("a","b","c",123);这样一下子给很多数组元素的方式也比较实用。此外我觉得定义数组的另外一种方式也还不错
2、js数组元素的添加
我以为这个js数组元素的添加主要是针对(var array1=new array())这样没有直接声明到底要在酒店中开多少房间情况,不过这样添加起来也还是比较容易的。这里我记得好像专门用来添加修改的方法好像还有push,unshift和splice,其中push用来自动添加元素到数组的最后一个位置的,他可以一下子添加多个。而unshift就和push相反,是将一个或者多个元素添加到数组第一个位置,以前有的元素都把数组空间往后移一位。另外一个splice就可以将元素添加到指定的位置,这个我在后面的js数组实践中也用过几次,不过具体的情况需要在方法中再添加一个添加的关键词,否则编译器就不知道你用这个方法来干什么。
具体形式是(arraytext2.splice(insertpos,0,[值]))这样的。
var arraytext2=new array();
arraytext2[0]=12;
arraytext2[1]='t';以这样的方式来定义数组的话,好像是可以无限慢慢地添加,所以我害怕进入死循环找不到解决问题我一般都不会用这种定义方法的。不过添加起来的话还是和其他的数组定义方式差不多。
3、js数组元素的删除
删除和添加的形式比较类似,有三种形式,第一种就是直接把数组最后一个元素删除,他的方法名字是pop,而第二种删除最前面的呢就是shift,去掉了js数据元素添加中的那个“un”,这样是表示相反的意思吧。最后一种指定删除的方法同样是使用的splice,不过形式要改成arraytext2.splice(deletepos,deletecount);前面是删除的关键词,后面就是需要删除的位置,这里需要注意的是数组的元素位置都是从0算起的,所以需要减1,我学习js数组的时候因为c语言也很久没用过了,所以这个数组的位置错过几次,希望大家一定要记住这样的错误。
4、复制一个新的js数组
在js中有两个方法可以给我们重新拷贝出和我们现有的数组只有名字差别新数组出来,他们分别是slice(0)和concat,不过我个人还常用后面的concat,前面那个我用起来总算很别扭。
5、js多维数据定义实践
var text=new Array(); //先声明好一个叫做text的一维数组
for(var i=0;i<10;i++){
text2[i]=new Array(); //然后我再一维数组里面声明一个text2的二维数组
for(var j=0;j<20;j++){ //所以二维数组就是在一维数组里面再定义一个数组
text[i][j]=1;
}
}
虽然js数组还有很多方法、属性,包括常用的length属性,但是我今天的分享还是以实践为主,太多笔记的话我这篇文章基本上就会被人看不懂了,下面就来看看我用js数组做的第一个小东西吧
|
function t2(){//小小计算器的调用方法 var a1=window.prompt('请输入数字:',0); var a2=window.prompt('请输入运算符号:',0); var a3=window.prompt('请输入数字:',0); if(a2=='+'){ alert('运算结果:'+(parseInt(a1)+parseInt(a3))); }else if(a2=='-'){ alert('运算结果:'+(parseInt(a1)-parseInt(a3))); }else if(a2=='*'){ alert('运算结果:'+(parseInt(a1)*parseInt(a3))); }else if(a2=='/'){ alert('运算结果:'+(parseInt(a1)/parseInt(a3))); } } function t3(){//学c语言的时候就学习过斐波拉切数列,这里用js 数组也还是挺方便的 var t=new Array(1,1); for(var i=2;i<100;i++){ t[i]=t[i-2]+t[i-1]; if(t[i]==parseInt(document.all.js.value)){ alert(parseInt(document.all.js.value)+"的fiber是:"+(i+1)); break; } } } function t4(){//个人所得税的方法,先写好,等下直接在下面调用就可以了, var sum=parseInt(document.all.sum.value); var val=0; if((sum-3500)>100000){ val=(sum-3500)*0.45-15375; }else if((sum-3500)>80000){ val=(sum-3500)*0.4-10375; }else if((sum-3500)>60000){ val=(sum-3500)*0.35-6375; }else if((sum-3500)>40000){ val=(sum-3500)*0.3-3375; }else if((sum-3500)>20000){ val=(sum-3500)*0.25-1375; }else if((sum-3500)>5000){ val=(sum-3500)*0.2-375; }else if((sum-3500)>2000){ val=(sum-3500)*0.15-125; }else if((sum-3500)>500){ val=(sum-3500)*0.1-25; }else if((sum-3500)<=500 && (sum-3500)>0 ){ val=(sum-3500)*0.05; }else if(sum<3500){ val=0; } document.all.val.value=val; } |
|
下面这些是直接调用上面我已经写好了的函数了
<input type="button" onclick="t2()" value="小小计算器"/>
<h1>单击计算按钮,则将输入数据的斐波拉契数打印出来:</h1>
<input name="js" /><input type="button" onclick="t3()" value="计算"/>
<h1>个人所得税计算器</h1>
收入总额:<input name="sum" />(元)<br />
<input type="button" value="计算" onclick="t4()"/><br />
应缴税额:<input name="val" />(元)<br />
|
以上就是我js 数组的实践代码,由于网站限制所以如果直接拿去调试的话可能不会出现效果,不过我将方法和调用的地方都分开搞的话,应该还是可以勉强看得明白。如果大家对于我的这些js实践有什么意见的话,求指点啊!
原文链接:http://www.52ij.com/it/js-array.html,如有转载请记得注明我爱IT技术网并保留原地址
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
