JS里面可以用splice()函数对数组的元素进行互换位置,用法如下:
data = ["Red", "Blue", "Green", "Yellow", "Black", "White", "Orange"]
// (7) ["Red", "Blue", "Green", "Yellow", "Black", "White", "Orange"]
data.splice(2,0,data.splice(3,1)[0]) //意思是把第4位(index=3)的数据移到第3位(index=2)
// data = (7) ["Red", "Blue", "Yellow", "Green", "Black", "White", "Orange"]
// 可以看到数据位置移位了,
// 原始 data = ["Red", "Blue", "Green", "Yellow", "Black", "White", "Orange"]
// \ /
// X
// / \
// 现在 data = ["Red", "Blue", "Yellow", "Green", "Black", "White", "Orange"]
// 并不是Yellow和Green互换位置,只是把Yellow移到Green前面了
// 再看这个例子,
data.splice(2,0,data.splice(5,1)[0]) //意思是把第6位(index=5)的数据移到第3位(index=2)
// data = (7) ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
//
// 原始 data = ["Red", "Blue", "Yellow", "Green", "Black", "White", "Orange"]
// \ ↓
// ----\-------←-----←--------
// ↓ \
// 现在 data = ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
补充一下Array.splice()函数:
顾名思义就是数组拼接函数,用法是这样的:
Array.splice(start, deleteCount, ...items)
start是指拼接起始位置,deleteCount是删除元素的数量,...items就是要加入的元素了,举些例子:
// 还是上面的那个数组
data = ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
// (7) ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
// 在第2个元素Red后面插1个元素
data.splice(1,0,"Pupple")
// data = (8) ["Red", "Pupple", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
// ↑
// 插入Pupple
// 替换第3个元素Blue
data.splice(2,1,"Cyan")
// → ["Blue"] // 如果第二个参数不为0,则会返回被删除的元素们
// data = (8) ["Red", "Pupple", "Cyan", "Green", "Yellow", "Black", "White", "Orange"]
// ↑
// 替换Blue为Cyan
splice和concat函数区别还是挺大的,concat有concatenate的意思,意思是把两个数组首尾相接连起来,而splice是更加广义的拼接,不单单是首尾相接,还可以插入到一个数组里面。