是否有任何本机方法可在类型数组内移动数据?例如,如果我想从数组中的某个位置“删除” 4个元素,然后将所有内容向下移动4个索引(例如C中的memmove)。还是必须使用Javascript编写?您认为最快/最有效的方法是什么?

最佳答案

好吧,我已经浏览了我能找到的文档和规范,但据我所知,没有任何方法可以在类型化数组内移动数据。这是我对“快速移动”功能的最佳猜测。您必须确保提供的范围有效,但是无论源索引在目标之前还是之后,它都应该起作用。

function taMove( a, iDst, iSrc, num ) {
    var i, j, k;
    if( iDst < iSrc ) {
        // copy forward
        for( i = iDst, j = iSrc, k = iDst + num; i < k; ++i, ++j ) {
            a[i] = a[j];
        }
    }
    else {
        // copy backward
        for( i = iDst+num-1, j = iSrc+num-1; i >= iDst; --i, --j ) {
            a[i] = a[j];
        }
    }
}

关于javascript - 在类型数组中移动数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25561527/

10-09 17:37