js 增加数组的嵌套层数
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 增加数组的嵌套层数的更多相关文章
- 探讨js字符串数组拼接的性能问题
这篇文章主要介绍了有关js对字符串数组进行拼接的性能问题,字符串连接一直是js中性能最低的操作之一,应该如何解决呢?请参看本文的介绍 我们知道,在js中,字符串连接是性能最低的操作之一. 例如: 复制 ...
- js对数组的操作函数
js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ...
- 原生js的数组除重复
js对数组的操作在平常的项目中也会遇到,除去一些增加,或者减少的操作外,还有一个比较重要的操作就是数组的除重,通过数组的除重,我们可以将一个数组中存在的多个重复的数组进行清理,只留下不重复的.另外下面 ...
- js的数组操作
用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵 ...
- js,jQuery数组常用操作小结
一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...
- js删除数组元素
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
- js删除数组元素、清空数组的简单方法
一.清空数组 ? 1 2 3 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即 ...
- js 的概念和声明-js 的变量-js 的运算符和逻辑结构-js 的数组
js 的概念和声明Js的概念和声明:问题:在网页的发展历程中,发现网页不能对用户的数据进行自动校验,和提供一些特效造成用户体验极差解决:使用JavaScript作用:可以让网页和用户之间进行直接简单的 ...
- js对数组的常用操作
在js中对数组的操作是经常遇到的,我呢在这就列一下经常用到的方法 删除数组中的元素: 1.delete方法:delete删除的只是数组元素的值,所占的空间是并没有删除的 代码: var arr=[12 ...
随机推荐
- Zookeeper C API的学习 以及样例 很赞
https://www.cnblogs.com/haippy/archive/2013/02/21/2920280.html
- 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用
一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...
- SpringMVC听课笔记(六:视图和试图解析器)
1.spring mvc解析视图 2. 视图和视图解析器 3. 视图 4.常用的视图类 5.视图解析器 1) 2) 3) 4)JSTL 需要注意的是,配置了mvc:view-controller,为 ...
- Tomcat Servlet工作原理
前言 Tomcat的启动过程 Web应用初始化 创建Servlet实例 初始化Servlet 执行service方法 前言 Servlet实际上就是一个java类,只不过可以和浏览器进行一些数据的交换 ...
- java+js正则表达式获取URL(带端口)域名
function isPassUrl(remoteLoginUrl){ var flag = false; var passUrlStr = document.getElementById(" ...
- ICMP&&PING
ICMP 1.定位:互联网控制报文协议(Internet Control Message Protocol),是TCP/IP协议族的一个子协议,位于网络层.它被IP用于提供许多不同的服务.ICMP是一 ...
- Centos8上搭建EMQ MQTT
layout: post title: Centos8上搭建EMQ MQTT subtitle: 在阿里云Centos8搭建EMQ并配置接入 date: 2020-3-11 author: Dapen ...
- Inceptor常用SQL
1.创建数据库 建一个数据库exchange_platform. DROP DATABASE IF EXISTS exchange_platform CASCADE; CREATE DATABASE ...
- Codeforces Global Round 7 D1. Prefix-Suffix Palindrome (Easy version)(字符串)
题意: 取一字符串不相交的前缀和后缀(可为空)构成最长回文串. 思路: 先从两边取对称的前后缀,之后再取余下字符串较长的回文前缀或后缀. #include <bits/stdc++.h> ...
- Codeforces Round #644 (Div. 3) D. Buying Shovels (数学)
题意:商店里有\(k\)个包裹,第\(i\)个包裹中含有\(i\)个物品,现在想要买\(n\)物品,你可以选择某一个包裹购买任意次,使得物品数刚好等于\(n\),求最少的购买次数. 题解:首先,假如\ ...