说我有一个功能:
function linesReverser(lines) {
var localLines = lines.slice();
localLines[1].reverse();
return _.flatten(localLines);
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
var input = [["Hello"],["Hello", "World"]["Attention", "Please"]];
var output1 = linesReverser(input); //["Hello", "World", "Hello", "Attention", "Please"]
var output2 = linesReverser(input); //["Hello", "Hello", "World", "Attention", "Please"]
Run Code Online (Sandbox Code Playgroud)
注意如何共享对象引用.我是JS的新手,但我认为复制这些值会缓解这个问题(line.slice()),但它似乎不起作用.这是因为嵌套数组?
我怎样才能非破坏性/不可逆地执行逆转?
Rya*_*ing 17
您可以使用 ES6 的扩展运算符复制数组,然后破坏性地反转副本:
const arr1 = [1,2,3];
const arr2 = [...arr1].reverse();
// arr1 => [1,2,3]
// arr2 => [3,2,1]
Run Code Online (Sandbox Code Playgroud)
你正在制作lines数组的浅表副本.要复制嵌套数组,您需要对每个数组进行切片.
var localLines = lines.map(function(arr) {
return arr.slice();
});
Run Code Online (Sandbox Code Playgroud)
该.map方法将返回一个新的返回值数组,它是每个嵌套数组的一个切片.
FWIW,这是一个可以在现代浏览器中使用的较短版本,但我可能会坚持使用第一个版本.
var localLines = lines.map(Array.apply.bind(Array, null));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |