在和后端兄弟对接接口的时候,经常遇到一个让人看着脑壳痛的数据形式:比如下图
你只是想要一个数组而已,但是后端返回的数据,让你脑壳疼,又得自己改造了数据了。像这样的[1, [2, [3, [4]], 5]];多维数组怎么简单处理成一维数组呢?
当然你可以一次次遍历数组处理,这里介绍一个好用的插件 lodash.js库。里面有各种数组和对象的处理方法,自己自行查看api,这里主要讲讲数组的降维处理
注意先在页面引入lodash.js
//浏览器环境:
<script src="lodash.js"></script>
// 通过 npm:
$ npm i -g npm
$ npm i --save lodash
// Node.js:
// Load the full build.
var _ = require('lodash');
// Load the core build.
var _ = require('lodash/core');
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require('lodash/fp');
// Load method categories.
var array = require('lodash/array');
var object = require('lodash/fp/object');
// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require('lodash/at');
var curryN = require('lodash/fp/curryN');
(1)_.flatten(array)
减少一级array
嵌套深度。
_.flatten([1, [2, [3, [4]], 5]]);
// => [1, 2, [3, [4]], 5]
(2)_.flattenDeep(array)
将array
递归为一维数组,不管有多少层。
_.flattenDeep([1, [2, [3, [4]], 5]]);
// => [1, 2, 3, 4, 5]
(3)_.flattenDepth(array, [depth=1])
根据 depth
递归减少 array
的嵌套层级,减少几层自己定
var array = [1, [2, [3, [4]], 5]];
_.flattenDepth(array, 1);
// => [1, 2, [3, [4]], 5]
_.flattenDepth(array, 2);
// => [1, 2, 3, [4], 5]
lodash文档地址:https://www.lodashjs.com/