有这样的一个数组,如何做下这种结果呢?

有这样的一个数组,如何做下这种结果呢?

有这样的数组[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

回到顶部