如何在 TypeScript 中创建从 1 到 N 的数组?

How to create an array from 1 to N in TypeScript?

我想要做的是创建一个从 1 到 N 的数组并将其命名为 first_array,然后将它与另一个具有相同长度的数组(second array)组合并创建一个新的数组对象如下所示:

new_array = [
  {
    "name": "first_array[0]",
    "value": second_array[0]
  },
  {
    "name": "first_array[1]",
    "value": second_array[2]
  },
    "name": "first_array[2]",
    "value": second_array[2]

];

如果你想要一个从 1 到 N 的数组,你可以创建一个长度为 N 的新数组,用填充值填充它,然后使用它们的索引填充值 .map.

例如:

const n = 10;
const myArray = new Array(n).fill(null).map((_, i) => i + 1);

myArray 的结果:

[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

但是在这种情况下,如果您只是将它与另一个数组一起使用,那么您似乎不需要该数组。相反,您可以使用其他数组 (second_array) 中的索引作为 "name" 键的值。

像这样:

const newArray = secondArray.map((e, i) => ({
    name: i + 1,
    value: e,
}));

示例案例:

输入

const secondArray = [100, 200, 300];

结果(newArray

[
  { name: 1, value: 100 },
  { name: 2, value: 200 },
  { name: 3, value: 300 }
]

首先创建一个包含最大预期元素数的数组。然后将这个空元素数组缩减为合并后的数组:

let array_1th = [1,2,3,4]
let array_2nd = [5,6,7,8];

let merged = Array(Math.max(array_1th.length, array_2nd.length))
   .fill().map((_, i) => ({ name: array_1th[i], value: array_2nd[i] }));
   
console.log(merged);

上述示例的一个小缺点是会创建两个数组,然后丢弃准备好的空数组。

一个稍微好一点的解决方案是使用 reduce 直接改变输入数组,这样只创建一个数组:

let array_1th = [1,2,3,4]
let array_2nd = [5,6,7,8];

let merged = Array(Math.max(array_1th.length, array_2nd.length)).fill()
   .reduce((_, __, i, array) => (array[i] = { name: array_1th[i], value: array_2nd[i] }, array), null);
   
console.log(merged);