动漫人物
您也可以通过单个Array.reduce解决这个问题:let arr = [5,4,0,3,1,6,2]let result = arr.reduce((acc, cur, indx, arr) => { let last = acc[acc.length-1] !indx ? acc.push(cur) : !last ? null : acc.push(arr[last]) return acc}, [])console.log('result: ', result, 'count: ', result.length)为了进一步简化,您可以始终从 中的第一个元素开始accumulator array:let arr = [5,4,0,3,1,6,2]let result = arr.reduce((acc, cur, _, arr) => { let last = acc[acc.length - 1] last ? acc.push(arr[last]) : null return acc}, [arr[0]])console.log('result: ', result, 'count: ', result.length)此外,如果您愿意,您可以将其作为一行:let arr = [5,4,0,3,1,6,2]let r = arr.reduce((r, c, _, a) => (r[r.length-1] ? r.push(a[r[r.length-1]]) : null, r), [arr[0]])console.log('result: ', r, 'count: ', r.length)