注意:我只是一个新手程序员,所以这个问题的核心可能是明显的错误或误解。
本质上,我需要将JavaScript中的“按值”多维数组深度复制到未知深度。我认为这将需要一些复杂的递归,但是似乎在JavaScript中,您只需要复制一个级别就可以按值复制整个数组。
举个例子,这是我的测试代码,它使用了一个故意卷积的数组。
function test() {
var arr = [ ['ok1'],[],[ [],[],[ [], [ [ ['ok2'], [] ] ] ] ] ];
var cloned = cloneArray(arr);
arr = ''; // Delete the original
alert ( cloned );
}
function cloneArray(arr) {
// Deep copy arrays. Going one level deep seems to be enough.
var clone = [];
for (i=0; i<arr.length; i++) {
clone.push( arr[i].slice(0) )
}
return clone;
}
Run Code Online (Sandbox Code Playgroud)
在我运行此测试(Ubuntu上最新稳定的Chrome和Firefox)的过程中,即使删除了原始数组,即使数组最深的部分也似乎已成功通过克隆中的值成功复制,即使slice_()复制”仅深入了一层。这是JavaScript中的标准行为吗?我可以依靠它来运行较旧的浏览器吗?
我刚刚开始在Vim.我喜欢的一个特性是>>和<<用于缩进/取消行,而不需要将光标放在行的开头.我使用3的shiftwidth,扩展到空格.
我的问题是,当使用>>或<<有没有办法使该行"捕捉"到最近的"完美"缩进?即对我来说,这将是第四列,第七,第十,等等.这对于深度嵌套的缩进级别来说非常方便.
或者(尽管稍微不满意/不太理想):从一行的开头删除所有空格的方法,然后我可以多次使用>>.