猿问

如何为具有动态嵌套的数组赋值?

我正在尝试做这样的事情,但是是动态的:


switch (scope) {

    case 1: array.push("something nice"); break;

    case 2: array[array.length-1].push("something nice"); break;

    case 3: array[array[array.length-1].length-1].push("something nice"); break;

    case 4: ...you get the idea

}

这意味着,如果我有一个像这样的数组:


[1,2,[5,3,9,[4]]]


当范围= 3时我输入开关,结果将是:


[1,2,[5,3,9,[4,"好东西"]]]


但是,如果范围 = 2,结果将是:


[1,2,[5,3,9,[4],"好东西"]]


我编写的代码适用于此目的,但我想在范围可以等于任何数字时动态地(无需切换)(假设数组将始终具有预先的范围,而不需要添加新的嵌套)。


互换的青春
浏览 96回答 1
1回答

蝴蝶不菲

如果是一个,你可以进行递归并推送scope。(个人认为,从编程的意义上来说,基于零的范围界定会更自然。)function push(array, scope, value) {    if (scope === 1) return array.push(value);    push(array[array.length - 1], scope - 1, value);}const array = [1, 2, [5, 3, 9, [4]]];push(array, 3, 'something nice');console.log(array);.as-console-wrapper { max-height: 100% !important; top: 0; }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答