JavaScript生成cartItems数组:随机12位EAN生成失败及重复问题求助
问题解决:生成随机12位EAN并避免数组元素重复
问题原因分析
- 无法生成12位EAN:原代码中
Math.floor(100000 + Math.random() * 900000) + 10000的计算结果是7位数字(范围110000~1010000),完全达不到12位的要求。 - 数组元素EAN全部相同:
new Array(500).fill(...)会把同一个对象实例填充到数组所有位置,所有cartItems元素共享同一个对象引用,ean值在填充时仅计算一次,因此所有元素的EAN完全一致。
修正后的代码
const generate12DigitEAN = () => { // 生成100000000000 到 999999999999 之间的随机整数 return Math.floor(Math.random() * 900000000000) + 100000000000; }; const requestParameters = { id: "530d275e-5de1-466d-86fe-3993a2563fb6", cartItems: Array.from({ length: 500 }, () => ({ additionalInfo: '', brand: '', replace: false, basicQuantityUnit: 'KPL', collectingPriority: 1000, ean: generate12DigitEAN(), id: '0200097823340', itemCount: '1' })) }; console.log(requestParameters);
改动说明
- 生成12位EAN:通过
Math.floor(Math.random() * 900000000000) + 100000000000生成范围在100000000000到999999999999的随机整数,确保是标准12位数字。 - 避免元素重复引用:使用
Array.from({ length: 500 }, () => ({...})),每次迭代都会创建新的对象实例,每个cartItems元素都是独立个体,ean值会在每次创建对象时重新计算,保证随机性。
内容的提问来源于stack exchange,提问作者user12494839
相关产品推荐
相关产品推荐

