小编use*_*911的帖子

对于JavaScript多维数组的深层副本,深入一层似乎就足够了。这是真的吗?

注意:我只是一个新手程序员,所以这个问题的核心可能是明显的错误或误解。

本质上,我需要将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中的标准行为吗?我可以依靠它来运行较旧的浏览器吗?

javascript arrays multidimensional-array

5
推荐指数
1
解决办法
3341
查看次数

在Vim中"Snappy"缩进?

我刚刚开始在Vim.我喜欢的一个特性是>>和<<用于缩进/取消行,而不需要将光标放在行的开头.我使用3的shiftwidth,扩展到空格.

我的问题是,当使用>>或<<有没有办法使该行"捕捉"到最近的"完美"缩进?即对我来说,这将是第四列,第七,第十,等等.这对于深度嵌套的缩进级别来说非常方便.

或者(尽管稍微不满意/不太理想):从一行的开头删除所有空格的方法,然后我可以多次使用>>.

vim indentation

1
推荐指数
1
解决办法
128
查看次数