使用Ramda

时间:2017-08-14 17:16:22

标签: javascript ramda.js

我有一个如下所示的数组:

const difficulties = [
  [true, true],
  [true],
  [true, true, true],
  [true]
]

我想要做的是使用Ramda对数组执行转换,以便每个子数组都填充false,如下所示:

[
  [true, true, false],
  [true, false, false],
  [true, true, true],
  [true, false, false]
]

我将如何做到这一点?

3 个答案:

答案 0 :(得分:2)

使用普通js,您可以找到最大数组长度,并使用mysql_query填充内部数组。



fill()




答案 1 :(得分:2)

使用Ramda,您可以使用R.timesR.propOr



const difficulties = [
  [true, true],
  [true],
  [true, true, true],
  [true]
];

let difficultiesFilled = R.map(e => R.times(i => R.propOr(false, i, e), 3), difficulties);
console.log(difficultiesFilled);

<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.24.1/ramda.min.js"></script>
&#13;
&#13;
&#13;

如果数组的最大长度未知,您可以这样做:

let maxLength = R.reduce(R.maxBy(R.length), [], difficulties);

并使用它代替3

答案 2 :(得分:1)

为所有数组提供.length 3.fill()个额外广告位。

for (const a of difficulties) {
  const orig = a.length;
  a.length = 3;
  a.fill(false, orig);
}

有许多不同的方法可以实现这一目标。以上只是一个。在练习中尝试其他方法是一个很好的练习,因为这是一项非常简单的任务。