Javascript 获取子数组中的项并放回主数组
当通过javascript获取子数组中的项并将其放回主数组时,我遇到了一个问题。 我有这样的数组:Javascript 获取子数组中的项并放回主数组,javascript,arrays,destructuring,Javascript,Arrays,Destructuring,当通过javascript获取子数组中的项并将其放回主数组时,我遇到了一个问题。 我有这样的数组: var array_demo = [ ['1st', '1595', '8886'], ['2nd', '1112'] ] 我想得到这样的结果: ['1595'、'8886'、'1112'] 但当我使用此代码时: array_demo.map(function(i) { return i.slice(1).join(); }); 结果:['15958886','1112
var array_demo = [
['1st', '1595', '8886'],
['2nd', '1112']
]
我想得到这样的结果:
['1595'、'8886'、'1112']
但当我使用此代码时:
array_demo.map(function(i) {
return i.slice(1).join();
});
结果:['15958886','1112']
有人能帮我吗?代替join()
在map()的返回结果上使用:
var数组\u演示=[
['1st','1595','8886'],
['2nd','1112']
]
array\u demo=array\u demo.map(函数(i){
返回i.slice(1);
}).flat();
日志(数组_演示)代码>您可以在不使用第一个元素的情况下分解数组的结构,并使用
var数组=[[1st'、[1595'、[8886']、[2nd'、[1112'],
结果=数组.flatMap(([,…a])=>a);
控制台日志(结果)
您可以使用Array.prototype.flat
后跟Array.prototype.filter
来清除子数组中的非数字数据:
var数组\u演示=[
['1st','1595','8886'],
['2nd','1112']
];
常量res=array_demo.flat().filter(n=>!isNaN(n));
控制台日志(res)代码>您也可以使用数组。减少,并按如下方式使用它:
array_demo.reduce( function(prev, curr, index) {
return prev.concat(curr.slice(1));
} ).slice(1);
实际上,array.map返回数组中每个元素的结果。因此,在您的示例中,它有两个周期:
['1st','1595','8886']->返回'15958886',因为您使用了join()
['2nd','1112']->返回'1112',这也是因为您使用了join()
在一个数组中->['15958886','1112'].array\u demo.reduce((acc,array\u element)=>acc.concat(array\u element.slice(1)),[]))
使用
var数组\u演示=[
['1st','1595','8886'],
['2nd','1112']
]
var reduced_array=array_demo.reduce((reducedArray,elem)=>{
elem.shift()//删除第一项
返回还原数组concat(elem)
}, [])
log(reduced_array)
当我们需要单个累积值时,我们可以使用reduce函数
var数组\u演示=[
['1st','1595','8886'],
['2nd','1112']
]
var l=数组\u demo.reduce((val,项)=>{
返回值concat(项目切片(1));
},[]);
控制台日志(l)代码>我认为这是最干净的方法。谢谢你的帮助,喜欢你的答案,而且速度非常快。谢谢你的帮助,它工作得非常好,但是正确的答案太多了,我不知道哪里是最好的,所以我选择了更快的答案。最后,非常感谢。非常、非常清楚地感谢您,并向我显示错误,但正确答案太多,因此我应该为更快的答案打绿色勾。是的,您应该接受最适合您的答案谢谢您的答案,但非常抱歉,因为我无法为您打绿色勾,正确答案太多。最后,非常感谢你花时间帮助我。:)不用担心,只要选一个最干净的;)非常感谢你的帮助非常感谢你的帮助