如何避免数组嵌套?在map生成语句后链式添加元素
解决数组嵌套问题的两种方案
你当前的写法会产生嵌套数组,原因是d3.range().map()返回的本身就是一个数组,直接把它作为元素放进data数组里,自然会形成[对象, 数组]的嵌套结构。下面是两种能实现平级合并且满足链式调用需求的方法:
方法1:使用ES6展开运算符(最简洁)
直接用...展开map生成的数组,让其中的每个元素都成为data的平级元素:
var data = [ {'id':'1Q19'}, ...d3.range(21).map(function(v) { return {name: v.toString()+'_product', type:'td'} }) ];
方法2:链式调用concat()方法
先初始化包含手动硬编码元素的数组,再链式调用concat()合并map生成的数组:
var data = [{'id':'1Q19'}].concat( d3.range(21).map(function(v) { return {name: v.toString()+'_product', type:'td'} }) );
concat()方法会返回一个新的合并数组,不会修改原初始数组,完全符合链式调用的要求。
内容的提问来源于stack exchange,提问作者Arash Howaida
相关产品推荐
相关产品推荐

