是否有与Dart的List.expand()方法等效的Javascript?

时间:2019-12-23 11:25:49

标签: javascript

飞镖列表中有一个expand method,可以执行以下操作:

var input = [1, 2, 3];
var duplicated = input.expand((i) => [i, i]).toList();
print(duplicated); // => [1, 1, 2, 2, 3, 3]

用JavaScript做到这一点的最佳方法是什么?

3 个答案:

答案 0 :(得分:5)

您可以使用.flatMap并让回调函数返回包含两个元素的数组,这些元素会自动变平:

var input = [1, 2, 3];
const expanded = input.flatMap(num => [num, num]);
console.log(expanded);

答案 1 :(得分:1)

您可以这样做。

var input = [1,2,3];
var duplicated = input.map(i=>[i,i]).flat()
console.log(duplicated);

答案 2 :(得分:0)

在这种情况下,flatMap方法是首选方法,因为它具有可读性,但只是向您展示了更多方法可以做到这一点:

var input = [1, 2, 3];
var duplicated = input.reduce((a, b) => { 
  a.push(b,b);
  return a; 
}, []);
console.log(duplicated);