0

我需要创建 4 个变量,它们都带有一个随机复合数。复合数由函数创建。有没有更简单的方法来使用相同的函数而不是下面的脚本来创建 4 个变量?

var a = create_composite();
var b = create_composite();
var c = create_composite();
var d = create_composite();
4

3 回答 3

1

这有点短,但不确定它是否是你想要的......

// stub function
const create_composite = () => Math.floor(Math.random() * 10)

const [a, b, c, d] = (new Array(4)).fill(0).map(create_composite)

console.log(a, b, c, d);

另一种选择是修改create_composite以接受您希望生成的合数数量:

const create_composites = (qty=1) => {
   return (new Array(qty)).fill(0).map(() => {
      // original composite number function code
   });
}

然后你可以像我上面那样以类似的方式使用它:

const [a, b, c, d] = create_composites(4);

虽然我们正在就更改您的create_composite功能提出建议,但我能想到的最佳选择是将该功能转变为生成器

function* create_composite() {
   while(true)
     // yield your return value here
     yield Math.floor(Math.random() * 10);
}
    
const [a, b, c, d, e, f, g] = create_composite();
console.log(a, b, c, d, e, f, g);

这将允许您根据需要获取尽可能多的变量

于 2017-03-20T21:28:20.857 回答
0

我认为这是最简单的方法。你也可以这样做:

var a = create_composite(),
b = create_composite(),
c = create_composite(),
d = create_composite();

这取决于偏好,但在 JavaScript 中没有更简单的方法:)

于 2017-03-20T21:17:14.377 回答
0

如果你使用的是支持 ES6 的浏览器,或者正在使用 babel 或类似的,你可以这样做:

var { a, b, c, d } = create_composite();

如果 create_composite 返回一个带有键 a、b、c、d 的对象,那么您将可以访问这些单独的变量。

否则,在较旧的浏览器中,您仍然可以让函数返回一个对象,您只需要单独调用属性,如下所示:

var compositeNumber = create_composite();
console.log(compositeNumber.a);
于 2017-03-20T21:24:02.210 回答