实现 flatten 扁平化对象和数组
/**
* 对象扁平化
* 说明:请实现 flatten(input) 函数,input 为一个 javascript 对象(Object 或者 Array),返回值为扁平化后的结果。
* var input = {
* a: 1,
* b: [ 1, 2, { c: true }, [ 3 ] ],
* d: { e: 2, f: 3 },
* g: null,
* }
* output如下
* {
* "a": 1,
* "b[0]": 1,
* "b[1]": 2,
* "b[2].c": true,
* "b[3][0]": 3,
* "d.e": 2,
* "d.f": 3,
* // "g": null, 值为null或者undefined,丢弃
* }
*/
<!DOCTYPE html>
<html><head><title>Example Domain</title><meta charset="utf-8" /><meta http-equiv="Content-type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script>let result = {};const flatten = (params, key) => {if (params instanceof Array) {params.forEach((param, index) => {if (param instanceof Object || param instanceof Array) {flatten(param, `${key}[${index}]`);} else {result[`${key}[${index}]`] = flatten(param, `${key}[${index}]`);}});} else if (params instanceof Object) {for (var itemKey in params) {const itemValue = params[itemKey];if (itemValue instanceof Array) {flatten(itemValue, itemKey);} else if (itemValue instanceof Object) {flatten(itemValue, itemKey);} else if (itemValue === null || itemValue === undefined) {} else {if (key) {result[`${key}.${itemKey}`] = flatten(itemValue, itemKey);} else {result[itemKey] = flatten(itemValue, itemKey);}}}} else {return params;}};var input = {a: 1,b: [1,2, {c: true},[3]],d: {e: 2,f: 3},g: null};flatten(input);console.log(result);</script>
</head><body><div><h1>Example Domain</h1><p><br>* 对象扁平化<br>* 说明:请实现 flatten(input) 函数,input 为一个 javascript 对象(Object 或者 Array),返回值为扁平化后的结果。<br>* 示例:<br>* var input = {<br>* a: 1,<br>* b: [ 1, 2, { c: true }, [ 3 ] ],<br>* d: { e: 2, f: 3 },<br>* g: null, <br>* }<br>* var output = flatten(input);<br>* output如下<br>* {<br>* "a": 1,<br>* "b[0]": 1,<br>* "b[1]": 2,<br>* "b[2].c": true,<br>* "b[3][0]": 3,<br>* "d.e": 2,<br>* "d.f": 3,<br>* // "g": null, 值为null或者undefined,丢弃<br>* }<br>*/<br>function flatten() {<br> /* 代码实现 */<br>}</p></div>
</body></html>
实现 flatten 扁平化对象和数组相关推荐
- 树形json扁平化,一维数组树状化,对象深拷贝,元素后插入新元素,格式或动态路由等常用js合集
索引 一.在元素后面插入一个新的元素. 二.对象或者数组的深拷贝. 三.从服务器端获取到动态路由表的格式化. 四.json树形数据扁平化处理(变成一维数组) 五.一维数组转化为树状结构对象. 六.防抖 ...
- JAVA数组扁平化整合_数组扁平化的几种处理放法
清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...
- 利用Gson对json进行flatten(扁平化)处理
目录 一.Gson的简单介绍 二.通过构建json树实现两层json的解析 三.通过递归实现多层json的解析 一.Gson的简单介绍 Gson是Google发布的一个处理json的java库.通过使 ...
- JSON数据处理之扁平化对象输出
有时候返回json的数据中的属性存在在多个对象之中.我们期望它能够整合起来,去掉对象的外衣.这个简单理解为对象扁平化 @Getter @Setter @ToString public class Ac ...
- JAVA数组扁平化整合_JS数组扁平化(flat)方法总结详解
需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_ ...
- wxpython 按钮 扁平化_tensorflow tensor Flatten 张量扁平化,多通道转单通道数据
slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim) ...
- matlab flatten,Numpy中扁平化函数ravel()和flatten()的区别
在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...
- web前端数组处理之扁平化数组
在进行前端开发的时候避免不了会遇到很多数组的情况,其中不乏会存在数组套数组或者需要合并数组的情况.今天小千就来给大家介绍一下如何将数组扁平化处理. 数组扁平化概念:用于将嵌套多层的数组"拉平 ...
- 实现数组扁平化的 6 种方式
实现数组扁平化的 6 种方式 老规矩,开局先上问题,带着问题去思考: 怎样用最普通的方法解决数组扁平化问题? ES6里面是否有一些高级的方法能够直接实现? 扁平化的实现 数组的扁平化其实就是将一个 ...
最新文章
- Hadoop-2.7.4 集群快速搭建
- was not found on the Java Build Path
- Qt中的QFormLayout
- 职称计算机必考和选考,2017职称计算机考试选择题「附答案」
- centos ftp服务器搭建_CentOS系统云服务器宝塔面板安装以及微信小程序服务器搭建...
- 关于LRU缓存简单记录以及代码补全。
- Delphi中动态调用DLL的方法
- mybatis中sql语句传入多个参数方法
- DirectX 学习笔记
- 企业微信小程序可用存储空间不足_微信小程序为什么能帮助企业商家引流?
- MATLAB/Simulimk 光伏发电+boost+储能+双向dcdc+并网逆变器控制(低压用户型电能路由器仿真模型)
- 华为新员工入职180天培训计划
- Firefox无法打开VMWare console的解决方案
- Windows系统开机自动运行程序和自动启动服务
- 剽悍一只猫《一年顶十年》读书笔记
- oracleTNS-12555: TNS:permission denied、TNS-12541: TNS:no listener、Instance orcl, status UNKNOWN
- 【企业微信】自建应用可信域名验证
- zb服务器连接不稳定,绝对惊人!全球服务器处理9.57ZB数据
- Metasploit进行渗透测试的常用流程【入门】
- 自动驾驶决策规划算法第二章——Apollo EM Planner实践篇
热门文章
- Leet Code 力扣 - - 最短最优雅python解法带解析汇总
- 学学这五招,打造自媒体短视频
- html的动画属性,css动画属性使用及实例代码(transition/transform/animation)
- 达内python 资源_Python学习资源整理,优质Python学习资源推荐
- 黑马前端案例——模拟京东显示密码
- 运用 Xpad 作笔记
- nova6se是华为鸿蒙系统吗,华为荣耀9x和nova6se哪个性价比高?_科技数码通
- 乐讯机器人精简版2016迎春版【隆重发布】
- EC-PCA: 利润中心记账流程
- 网站优化(提高网站访问量)