项目中有一块要求:要在固定的位置根据宽高比例放图片。返回的数据中有宽高比的值,然后与页面上固定的位置的宽高比做比较,来放对应的图片。
问题是:返回数据的顺序和宽高比不固定,所以只是单纯的写两个循环来放海报的位置根本行不通。
以上是这个demo的代码,上面代码执行后的结果如下图:
由图中可知,所有的数据都只是—1,并没有显示出—2,—3等。这是因为循环时,到—1的时候,就进入了判断中,接着就break跳出循环。这样就会每次只能取出数据中在前的—1的值。这样就不能达到我们的目的:要让所有的对应数据展示在p标签内。此时我们就会想到每次放完一个数据后,把这个数据删除了,那么下一次再循环的时候就不存在这条已经显示过的数据,也就不会每次只显示—1的值了。
这个思路也就是要把for循环那里的代码改一下。此处,就要想怎样删除一个数组中的一个值。
方法一:
|
|
上面这句话加入到代码中,然后在for循环中break的前面加一句arr.remove(j);就可以达到目的。重新执行代码后的结果如下:
此时就是我们想要的效果了。
方法二:
|
|
中,然后在for循环中break的前面加一句arr.remove(arr[j]);同样可以达到目的。
方法三:
|
|
针对于splice(index,len,[item]);的方法,还有替换和增加数组中元素的使用方式。
替换:
添加:
扩展:
delete方法
delete删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变
var arr1 = [“q”,”w”,”e”,”r”];
delete arr1[1]
console.log(arr1);
console.log(arr1.length);//4