加拿大邮政编码如下:
L5R 1Y2
我一直在玩lodash从字符串中挑选随机元素,这就是我想出来的。
num1 = _.sampleSize('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1);
char1 = _.sampleSize('123456789', 1);
num2 = _.sampleSize('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1);
char2 = _.sampleSize('123456789', 1);
num3 = _.sampleSize('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1);
char3 = _.sampleSize('123456789', 1);
char4 = _.sampleSize('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1);
console.log(char1,num1,char2 + ' ' + char3,num3,char4)
我对这段代码不满意,有关如何优化它的任何建议吗?
答案 0 :(得分:1)
这有点短:
let letters = _.times(3, () => _.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZ'));
let numbers = _.times(3, () => _.sample('123456789'));
console.log(`${letters[0]}${numbers[0]}${letters[1]} ${numbers[1]}${letters[2]}${numbers[2]}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
答案 1 :(得分:1)
假设您可以使用随机int生成器,从字母和数字的字符串中选择字符,以获得两个数组:
something
交错的概念实际上非常简单:
const arrayOfLetters = ["H", "H", "H"];
const arrayOfNumbers = ["0", "0", "0"];
交错使用任意数量的数组并不是更难。
空间划分在技术上不是规范的一部分(并且也被看作是用连字符划分的)。因此,如果您真的想要包含它,或者为它包含空间,那么您可以执行以下操作:
const interleave = (arr1, arr2) =>
Array.from({ length: arr1.length }) // or use Math.min or Math.max
.map((_, i) => [arr1[i], arr2[i]])
.reduce((a, b) => a.concat(b), []);
interleave(arrayOfLetters, arrayOfNumbers).join(""); // H0H0H0