Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如果只有删除/插入命令,如何在数组中移动元素?_Arrays_Algorithm_Cocoa_Nstableview - Fatal编程技术网

Arrays 如果只有删除/插入命令,如何在数组中移动元素?

Arrays 如果只有删除/插入命令,如何在数组中移动元素?,arrays,algorithm,cocoa,nstableview,Arrays,Algorithm,Cocoa,Nstableview,假设您有以下数组: 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

假设您有以下数组:

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
类正确更新和设置动画)。

1.保存并删除移动元素。 2.然后将所有后续元素向右移动,直到移动元素目标的索引。a、 救一个。b、 移除它。c、 将其插入到小于1的索引中。D继续,直到释放移动元素目标索引。
3.在当前可用索引中插入移动元素。

要将项目
i
与项目
j
交换:

  • 确保
    i
    (如果
    i>j
    ,则交换(变量值)
    i
    j
    ;如果
    i=j
    ,则返回)
  • deleteSert(数组,j,i)
  • deleteSert(数组,i+1,j)

  • “如果您只有删除/插入命令?”这是您强加的条件吗?根据背景信息,这是
    NSTableView
    class的条件。