生成假邮政编码

时间:2017-08-31 01:51:33

标签: javascript lodash

加拿大邮政编码如下:

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)

我对这段代码不满意,有关如何优化它的任何建议吗?

2 个答案:

答案 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