class A {}

const proxy = new Proxy(new A(), {
get(o, k) {
if (!/\d+/.test(k.toString())) return o[k]; if (!o.prototype) o.prototype = {};
if (!o.prototype.list) o.prototype.list = [];
o.prototype.list.push(parseInt(k));
return proxy;
},
}); proxy[3][4][3]; let count = proxy.prototype.list.reduce((acc, it) => (acc *= it), 1); const r = [];
for (let i = 0; i < count; i++) r.push(i); console.log(r);
// (36) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] function unflattenDeep(arr, list) {
for (let i = list.length - 1; i >= 1; i--) {
const value = list[i];
arr = arr.reduce((acc, it, index) => {
if (index % value === 0) acc.push([]);
acc[acc.length - 1].push(it);
return acc;
}, []);
}
return arr;
} // proxy.prototype.list => [3,4,3]
console.log(unflattenDeep(r, proxy.prototype.list)); // (3) [Array(4), Array(4), Array(4)]
// 0: Array(4)
// 0: (3) [0, 1, 2]
// 1: (3) [3, 4, 5]
// 2: (3) [6, 7, 8]
// 3: (3) [9, 10, 11]
// 1: Array(4)
// 0: (3) [12, 13, 14]
// 1: (3) [15, 16, 17]
// 2: (3) [18, 19, 20]
// 3: (3) [21, 22, 23]
// 2: Array(4)
// 0: (3) [24, 25, 26]
// 1: (3) [27, 28, 29]
// 2: (3) [30, 31, 32]
// 3: (3) [33, 34, 35]

js 增加数组的嵌套层数的更多相关文章

  1. 探讨js字符串数组拼接的性能问题

    这篇文章主要介绍了有关js对字符串数组进行拼接的性能问题,字符串连接一直是js中性能最低的操作之一,应该如何解决呢?请参看本文的介绍 我们知道,在js中,字符串连接是性能最低的操作之一. 例如: 复制 ...

  2. js对数组的操作函数

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ...

  3. 原生js的数组除重复

    js对数组的操作在平常的项目中也会遇到,除去一些增加,或者减少的操作外,还有一个比较重要的操作就是数组的除重,通过数组的除重,我们可以将一个数组中存在的多个重复的数组进行清理,只留下不重复的.另外下面 ...

  4. js的数组操作

    用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵 ...

  5. js,jQuery数组常用操作小结

    一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...

  6. js删除数组元素

    一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...

  7. js删除数组元素、清空数组的简单方法

    一.清空数组 ? 1 2 3 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即 ...

  8. js 的概念和声明-js 的变量-js 的运算符和逻辑结构-js 的数组

    js 的概念和声明Js的概念和声明:问题:在网页的发展历程中,发现网页不能对用户的数据进行自动校验,和提供一些特效造成用户体验极差解决:使用JavaScript作用:可以让网页和用户之间进行直接简单的 ...

  9. js对数组的常用操作

    在js中对数组的操作是经常遇到的,我呢在这就列一下经常用到的方法 删除数组中的元素: 1.delete方法:delete删除的只是数组元素的值,所占的空间是并没有删除的 代码: var arr=[12 ...

随机推荐

  1. 结合python版本安装python-devel gcc和g++的区别 安装前做yum搜索

    [test@ecs autocloudservices]# yum install python-develLoaded plugins: fastestmirrorLoading mirror sp ...

  2. Java调用RestFul接口

    使用Java调用RestFul接口,以POST请求为例,以下提供几种方法: 一.通过HttpURLConnection调用 1 public String postRequest(String url ...

  3. Lambda表达式及相关练习

    语法格式一无参数无返回值 语法格式二有一个参数并且无返回值 语法格式三若只有一个参数小括号可以省略不写 语法格式四有两个以上的参数有返回值并且Lambda体中有多条语句 语法格式五若Lambda体中只 ...

  4. sublime text 2应用

    http://www.sublimetext.com/2 可以下一个 a portable version  我自己的是win版和linux版都有 1.添加注释 先选择要注释的内容,然后按 ctrl ...

  5. 怎样将Sublime Text 设置成中文版(完整教程)

    1.打开Sublime Text,使用快捷键Shift+Ctrl+P,弹出查找栏,如图: 2.在搜索框中输入关键字 install ,出现下拉选项,点击选择其中的:Package Control: I ...

  6. Flink-v1.12官方网站翻译-P010-Fault Tolerance via State Snapshots

    通过状态快照进行容错 状态后台 Flink管理的键控状态是一种碎片化的.键/值存储,每项键控状态的工作副本都被保存在负责该键的任务管理员的本地某处.操作员的状态也被保存在需要它的机器的本地.Flink ...

  7. 负载均衡之LVS与Nginx对比

    今天总结一下负载均衡中LVS与Nginx的区别,好几篇博文一开始就说LVS是单向的,Nginx是双向的,我个人认为这是不准确的,LVS三种模式中,虽然DR模式以及TUN模式只有请求的报文经过Direc ...

  8. k8s~kubectl常用命令

    查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间 kubectl get pod kubectl get pod -n kube kubectl get pod -o w ...

  9. A - A Gifts Fixing

    t组询问,每次给出数列长度n 以及两个长度为n的数列{ai​}和{bi​}. 有三种操作:ai​−1, bi​−1以及ai​,bi​同时− 1 -1−1. 问最少多少步以后可以让两个数列变成常数数列. ...

  10. hive+postgres安装部署过程

    master节点安装元数据库,采用postgres:#useradd postgres#password postgressu - postgreswget https://ftp.postgresq ...