Как создать массив от 1 до N в TypeScript? - PullRequest
0 голосов
/ 17 января 2020

Я хочу создать массив от 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]

];

Ответы [ 2 ]

2 голосов
/ 17 января 2020

Сначала создайте массив с максимальным количеством ожидаемых элементов. Затем уменьшите этот массив пустых элементов до объединенного массива:

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);
2 голосов
/ 17 января 2020

Если вам нужен массив от 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 }
]
...