js交换数组中2个元素的位置,实现排序功能

JavaScript036

js交换数组中2个元素的位置,实现排序功能,第1张

原始数据:数组中有三个关于电影的对象数据

需求:需要根据评分(rating)的高低,按倒序排列,即评分越高,越靠前

错误示范一:

个人想法:把当前值赋给下一个值,再把下一个值赋给当前值,理论上来说没问题的。但是...............

结果:

错误示范二:

结果:评分都覆盖了,变为一组数据了

正确示范一:

结果:

正确示范二(es6解构赋值写法):

结果:

正确示范三:sort排序(注意这样是返回的新数组,而不是修改原数组)

返回值是负数,意味着不交换位置,返回值是正数交换位置,0的话,值是相等的,也就不存在交换一说了

结果:

正确示范四:sort排序(注意这样是返回的新数组,而不是修改原数组)

直接返回a-b的结果,a大于b,即返回正数交换,a小于b,即返回负数不交换,这样得到的数据是反的,即分数越高,排名越靠后,通过翻转得到正确的数据

或者返回b-a的结果就是正确的

结果:

如上就是根据需求交换数组数据实现排序的方法。

如有问题,请指出,接受批评。

<html>

<script type="text/javascript">

var arr=[1,2,3,4,5,6],t,pos1=1,pos2=4

t=arr[pos1]

arr[pos1]=arr[pos2]

arr[pos2]=t

for(var i=0i<arr.lengthi++)

{

document.write(""+arr[i]+"<br />")

}

</script>

</html>

假如我们有个已知数组 arr

arr = [1,2,3,4]

key = 3

我们要根据key的值来找到这个元素,然后把它挪到数组的第一位,让它返回的结果为[3,1,2,4]

for (var i = 0i <arr.lengthi++) {if (arr[i] === key) { arr.splice(i, 1) break}}arr.unshift(key)