Javascript数组递归更改值

时间:2015-01-25 18:36:38

标签: javascript arrays recursion

我一直在改变未知深度的数组值。

我希望迭代它并更改特定值,在完成所有更改后,我希望通过应用的更改接收整个数组。

代码示例:

var array = [];
    array.name = "Page";
    array.inside = [];

    array.inside.name = "Page inside";
    array.inside.inside = [];

    array.inside.inside.name = "Page inside inside";
    array.inside.inside.inside = [];

function changeValue(array) {
    for (var ii in array) {
        if (typeof array[ii] === 'object') changeValue(array[ii]);
        if (array.name) {
            array.name = array.name + " changed";
        }
        console.log(array);
    }
}

changeValue(array);

1 个答案:

答案 0 :(得分:0)

试试这个:

var array = [];

    array.name = "Page";
    array.inside = [];

    array.inside.name = "Page inside";
    array.inside.inside = [];

    array.inside.inside.name = "Page inside inside";
    array.inside.inside.inside = [];

function changeValue(array) {
    if (array.name) {
        array.name = array.name + " changed";
    }
    console.log(array);
    for (var ii in array) {
        if (typeof array[ii] === 'object') changeValue(array[ii]);
    }
}

changeValue(array);

每次循环都会改变array.name。这就是为什么你的结果“改变了”。将array.name修改带出循环,它可以正常工作。

祝你好运。