Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取多维数组的值_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 获取多维数组的值

Javascript 获取多维数组的值,javascript,jquery,arrays,Javascript,Jquery,Arrays,我想从你那里得到电话号码 var arr = [1,[2],[[3]],[[[4]]]]; 使用JavaScript/jQuery 在这个系列中可能会更多 您正在寻找Array.prototype.reduce() 例如: var-arr=[1[2],[3]],[4]]; 常数展平=arr=>arr.reduce( (acc,val)=>acc.concat( 数组.isArray(val)?展平(val):val ), [] ); 控制台日志(展平(arr))实际上,如果您只想获取数字,只

我想从你那里得到电话号码

var arr = [1,[2],[[3]],[[[4]]]];
使用JavaScript/jQuery


在这个系列中可能会更多

您正在寻找Array.prototype.reduce()

例如:

var-arr=[1[2],[3]],[4]];
常数展平=arr=>arr.reduce(
(acc,val)=>acc.concat(
数组.isArray(val)?展平(val):val
),
[]
);

控制台日志(展平(arr))实际上,如果您只想获取数字,只需将数组转换为字符串,然后使用简单的正则表达式提取所有数字:


console.log([1[2],[3],[[4]]]].toString().match(/\d+/g));//[“1”、“2”、“3”、“4”]
使用Array.prototype.reduce(),这是一个可怕的解释,说明了您想要完成的任务,并且没有为预期结果确定任何格式。请花点时间阅读。另外,请展示您所做的尝试……这不是一个免费的代码编写服务,问题很糟糕,但它不是由@Brian@YuryTarabanko链接的文章的副本。非常相似,但不同。多维数组比数组数组(n=2)更复杂。这里接受的答案不会使hemant的n=4 dim数组变平,它需要更多的递归。您忘记了向我们展示您编写的所有代码,并特别解释了哪些代码不适用于它。这是一个很好的解决方案,但关键的假设是字符串是ok@john编辑以包含返回数字而不是字符串的示例。再次,非常好的解决方案,但仍然有一个受限的用例。例如,不能使用.match()方法展平多维对象数组。如果OP有您的用例,那么您的用例是理想的,但是真正通用的展平需要类似于Array.prototype.reduce()的东西。当然,如果他们只是寻找数字以外的任何东西,那么就需要进行递归展平。正如我在回答的第一句中所说,这只适用于他们只想获得数字的情况。我不太理解这里的下一票。这很好,我不知道这个函数(展平),但我也不知道ECMAScript 6。你能在ECMAScript 5中解释一下吗?@Hermant如果不使用ES6胖箭头函数,代码将是:
const flatte=function(arr){return arr.reduce(function(acc,val){return acc.concat(Array.isArray(val)→flatte(val);},[]);}