有这样的一个数组,如何做下这种结果呢?
有这样的数组[1,2,3,4,5],如何实现[[1,2], [2,3], [3,4] ....] 一出一入?
回答:
[1,2,3,4,5].reduce((res, v, i, arr) => { if(i < arr.length-1) res.push([v, arr[i+1]])
return res;
}, [])
回答:
var arr = [1, 2, 3, 4, 5]arr = (arr.map((item, index) => (arr[index + 1]?[arr[index], arr[index + 1]]:undefined))).filter(item=>item)
回答:
const a = [1,2,3,4,5]const b = a.map((item,index)=>[item,a[index+1]])
b.pop()
回答:
不管你信不信,我又一次使用 Array.prototype.reduce
实现了你的需求:
const result = [1,2,3,4,5,6] .reduce((a, b, i) =>
// 这是关键的一步,如果当前 a 的长度加于 1,那么就往 a 里面每次添加两条记录,分别为 a 最后一项以及 b
a.length > 1 ? a.concat([a[a.length - 1], b]) : a.concat([b]), []
)
.reduce((a, b, i) =>
// 这一步用来生成最终的结果数组,如果为偶数,则直接往 a 最后面加一条 `[b]` 作为元素
// 如果为奇数,则从 a 里面删除最后一项,同时最后一项加上一个 b 之后,又重新添加至 a
// 最后得到提主想到的结果,当然这并不是最简单的方式,不太容易让人看懂
i % 2 === 0 ? a.concat([[b]]) : a.concat([a.pop().concat([b])]) , []
)
使用 Array.prototype.map
的方式:
const result = [1,2,3,4,5,6] // 这里的关键是必须要使用到 `map` 方法的第三个参数,否则就需要把数组存储在一个变量里面了
.map((a, i, o) => [a, o[i + 1]])
// 因为上面这个 `map` 会导致最后一项是不应该出现的,其判断条件可以是
// 最后一项目的第 `1` 个元素为 `undefined`
.filter(e => e[1] !== undefined);
不使用 Array.prototype
的方式:
const original = [1,2,3,4,5];const result = [];
for (let i = 0; i < original.length - 1; i += 1) {
result.push([original[i], original[i + 1]])
}
以上是 有这样的一个数组,如何做下这种结果呢? 的全部内容, 来源链接: utcz.com/p/936219.html