0

我有一个 3D 数组,我想将它的另一个副本复制到另一个数组中。

直接分配会将字符串返回到新数组,而不是 3D 数组。

foo = [] //3D array; 
boo = foo //boo becomes a string

知道如何做到这一点吗?

编辑:这是代码

背景.js

function onRequest(request, sender, sendResponse) {
localStorage = request.mes; // mes is an array
}; 
chrome.extension.onMessage.addListener(onRequest);
4

2 回答 2

0

你可能会使用克隆。试试这个,

var a = [1,2,[3,4,[5,6]]];

Array.prototype.clone = function() {
    var arr = [];
    for( var i = 0; i < this.length; i++ ) {
//      if( this[i].constructor == this.constructor ) {
        if( this[i].clone ) {
            //recursion
            arr[i] = this[i].clone();
            break;
        }
        arr[i] = this[i];
    }
    return arr;
}

var b = a.clone()

console.log(a);
console.log(b);

b[2][0] = 'a';

console.log(a);
console.log(b);
于 2012-08-14T09:21:11.577 回答
0

我发现的解决方案依赖于使用 jQuery,希望这不会成为问题?

var a1 = ['test', ['a','b',1], [[1,2,3],[4,5,6]]];
console.log(a1);
var a2 = jQuery.extend(true, {}, a1);
a1[0] = 'test - changed';
console.log(a1);
console.log(a2);

小提琴:http: //jsfiddle.net/gRoberts/AhKNx/

简单的设置var a2 = a1;只是创建一个对原始对象的引用,导致a2[0]被更改为test - changed;

查看您的控制台(Firefox/Chrome 中的 F12)以查看我的小提琴的输出;)

希望有帮助吗?

加文

于 2012-08-14T09:25:18.720 回答