假设您有以下数组:
oldArray = ['d','e','f','i','j'];
并且你希望将它变成这个新数组:
newArray = ['d','j','f','i','e'];
您可能已经注意到,j
和e
已互换。
但要做到这一点,你必须通过使用一系列delete-insert命令对来转换数组。那是
deleteInsert(array,i,j) = {
delete the element at index i,
move all elements in indexes after i downwards,
and finally insert the element at index j
}
你如何处理这个问题?
(作为背景信息,我试图让Cocoa的NSTableView
类通过在表视图中移动行来正确更新和动画。)
答案 0 :(得分:0)
1.保存并删除移动元素。 2.然后将所有后续元素向右移动直到移动元素目标的索引。 a。保存其中一个。 b。移动它。 c。将其插入到小于1的索引处。继续,直到您释放移动元素目标索引。 3.将移动元素插入当前自由索引中。
答案 1 :(得分:0)
与项目i
交换项目j
:
i < j
(如果i > j
,然后交换(变量的值)i
和j
;如果i = j
,则返回)。 deleteInsert(array, j, i)
deleteInsert(array, i + 1, j)