gpt4 book ai didi

javascript - 如何按照序列洗牌(非随机)

转载 作者:行者123 更新时间:2023-12-03 07:16:39 25 4
gpt4 key购买 nike

我需要构建一个返回给定数字的函数,该数字从数字的前面开始打乱,然后从后面开始写下一位数字,然后是从数字前面开始的第 3 位数字和从后面开始的第 4 位数字,依此类推上。

示例:

const initialNumber = 123456 应该返回const finalNumber = 162534

const initialNumber2 = 104 应该返回常量 finalNumber2 = 140

此外,数字应介于 0 和 100.000.000 之间。

怎么做?我应该首先使用 split() 方法然后使用 for 循环将数字转换为数组吗?

最佳答案

您可以将输入拆分为数组并reduce:

const shuffle = input => input.toString().split('').reduce((acc, item, index, data) => {
const arr = (index % 2 ? data.slice().reverse() : data);
return acc.concat(arr[Math.floor(index / 2)]);
}, []).join('');

console.log(shuffle(104)); // 140
console.log(shuffle(123456)); // 162534
console.log(shuffle(1234567)); // 1726354

稍微精简的代码:

const shuffle = input => input.toString().split('').reduce((acc, item, index, data) =>
acc.concat((index % 2 ? data.slice().reverse() : data)[Math.floor(index / 2)]), []
).join('');

关于javascript - 如何按照序列洗牌(非随机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51760754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com