/**
 * 对象扁平化
 * 说明:请实现 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 扁平化对象和数组相关推荐

  1. 树形json扁平化,一维数组树状化,对象深拷贝,元素后插入新元素,格式或动态路由等常用js合集

    索引 一.在元素后面插入一个新的元素. 二.对象或者数组的深拷贝. 三.从服务器端获取到动态路由表的格式化. 四.json树形数据扁平化处理(变成一维数组) 五.一维数组转化为树状结构对象. 六.防抖 ...

  2. JAVA数组扁平化整合_数组扁平化的几种处理放法

    清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...

  3. 利用Gson对json进行flatten(扁平化)处理

    目录 一.Gson的简单介绍 二.通过构建json树实现两层json的解析 三.通过递归实现多层json的解析 一.Gson的简单介绍 Gson是Google发布的一个处理json的java库.通过使 ...

  4. JSON数据处理之扁平化对象输出

    有时候返回json的数据中的属性存在在多个对象之中.我们期望它能够整合起来,去掉对象的外衣.这个简单理解为对象扁平化 @Getter @Setter @ToString public class Ac ...

  5. JAVA数组扁平化整合_JS数组扁平化(flat)方法总结详解

    需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_ ...

  6. wxpython 按钮 扁平化_tensorflow tensor Flatten 张量扁平化,多通道转单通道数据

    slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim) ...

  7. matlab flatten,Numpy中扁平化函数ravel()和flatten()的区别

    在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...

  8. web前端数组处理之扁平化数组

    在进行前端开发的时候避免不了会遇到很多数组的情况,其中不乏会存在数组套数组或者需要合并数组的情况.今天小千就来给大家介绍一下如何将数组扁平化处理. 数组扁平化概念:用于将嵌套多层的数组"拉平 ...

  9. 实现数组扁平化的 6 种方式

    实现数组扁平化的 6 种方式 老规矩,开局先上问题,带着问题去思考: 怎样用最普通的方法解决数组扁平化问题? ES6里面是否有一些高级的方法能够直接实现? 扁平化的实现   数组的扁平化其实就是将一个 ...

最新文章

  1. Hadoop-2.7.4 集群快速搭建
  2. was not found on the Java Build Path
  3. Qt中的QFormLayout
  4. 职称计算机必考和选考,2017职称计算机考试选择题「附答案」
  5. centos ftp服务器搭建_CentOS系统云服务器宝塔面板安装以及微信小程序服务器搭建...
  6. 关于LRU缓存简单记录以及代码补全。
  7. Delphi中动态调用DLL的方法
  8. mybatis中sql语句传入多个参数方法
  9. DirectX 学习笔记
  10. 企业微信小程序可用存储空间不足_微信小程序为什么能帮助企业商家引流?
  11. MATLAB/Simulimk 光伏发电+boost+储能+双向dcdc+并网逆变器控制(低压用户型电能路由器仿真模型)
  12. 华为新员工入职180天培训计划
  13. Firefox无法打开VMWare console的解决方案
  14. Windows系统开机自动运行程序和自动启动服务
  15. 剽悍一只猫《一年顶十年》读书笔记
  16. oracleTNS-12555: TNS:permission denied、TNS-12541: TNS:no listener、Instance orcl, status UNKNOWN
  17. 【企业微信】自建应用可信域名验证
  18. zb服务器连接不稳定,绝对惊人!全球服务器处理9.57ZB数据
  19. Metasploit进行渗透测试的常用流程【入门】
  20. 自动驾驶决策规划算法第二章——Apollo EM Planner实践篇

热门文章

  1. Leet Code 力扣 - - 最短最优雅python解法带解析汇总
  2. 学学这五招,打造自媒体短视频
  3. html的动画属性,css动画属性使用及实例代码(transition/transform/animation)
  4. 达内python 资源_Python学习资源整理,优质Python学习资源推荐
  5. 黑马前端案例——模拟京东显示密码
  6. 运用 Xpad 作笔记
  7. nova6se是华为鸿蒙系统吗,华为荣耀9x和nova6se哪个性价比高?_科技数码通
  8. 乐讯机器人精简版2016迎春版【隆重发布】
  9. EC-PCA: 利润中心记账流程
  10. 网站优化(提高网站访问量)