嵌套数组的截取

var arr=[
    [11,12,13,"内容","内容2"],
    [21,22,23,"内容","内容2"],
    [31,32,33,"内容","内容2"]
];
var arr2=[
    [11,12,13],
    [21,22,23],
    [31,32,33]
];

想向各位大佬求一个简单的方法,arr的每一项截取前三位得到的结果如arr2
想到的方法只有自己新建一个空数组,处理数据之后,放到arr2中

阅读 2.3k
3 个回答
var arr2 = arr.map(cur => cur.slice(0, 3))
// 或者使用Array.from
arr2 = Array.from(arr, item => item.slice(0, 3))
arr.forEach(value => {
  value.splice(3);
});

这样是直接修改原来的arr

let arr2 = arr.map(value => {
  return value.slice(0,3);
});

这样既不更改原来的数组,新数组是满足要求的

这种一一映射的数据处理,可以使用 map,处理数据的逻辑放到 map 的回调函数中就好了,比如:

arr2 = arr.map(function(e){
    return e.slice(0, 3)
})

这样写,不仅逻辑清晰,可读性高,而且始终返回新的数组,不会修改旧的数组,所以具有纯函数的特性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题