在 angular 中声明一个具有自定义数据范围的数组
Declare an array with custom data range in angular
我需要在 angular 项目中声明一个具有自定义数据范围的数组。
数据范围由前缀字母 A 或 F 与数字范围的组合描述:A001 - A069,F070 - F660,除了 "GND" - ground lvl 和 UNL - unlimited as first/last 值。所以结构看起来像这样:
altitudeOptions[] = [GND], [A001],.. - ..,[A069], [AF70],.. - ..,[F660], [UNL]
我在考虑像这样删除两个数组:
AltArrayA: number[] = [...Array(69).keys()].map(x => x + 1);
..然后添加前缀字母,连接两个数组 A 和 F,然后将 GND 和 UNL 设置为第一个和最后一个元素。
请帮助我以最佳方式做到这一点。
您可以使用 spread
运算符连接数组。此外,可以使用 Array.from
来设置数组的长度。根据长度,您可以设置零符号:
const arr_A = Array.from({length: 69}, (v, k) => `A` + ((k <= 8 ) ? '00' : '0') + (k + 1));
const arr_F = Array.from({length: 590}, (v, k) => `F` + ((k < 30 ) ? '0' : '') + (k + 70));
const concatenated = ['GND', ...arr_A, 'AF70', ...arr_F, 'UNL'];
一个例子:
const arr_A = Array.from({length: 69}, (v, k) => `A` + ((k <= 8 ) ? '00' : '0') + (k + 1));
const arr_F = Array.from({length: 590}, (v, k) => `F` + ((k < 30 ) ? '0' : '') + (k + 70));
const concatenated = ['GND', ...arr_A, 'AF70', ...arr_F, 'UNL'];
console.log(concatenated)
更新:
此解决方案将 O(n * 2)
复杂度:
const arr_A = Array.from({length: 69}, (v, k) => ( k % 5 == 0) ?
(`A` + ((k <= 8 ) ? '00' : '0') + (k)) : null)
.filter( f => f);
console.log(arr_A)
但是,此解决方案将 O(n)
变得复杂:
const createArray = ( arrLength ) => {
let fooArray = [];
for (let index = 0; index < arrLength; index++) {
if (index % 5 == 0)
fooArray.push(`${index}`);
}
return fooArray;
}
console.log(createArray(69));
我需要在 angular 项目中声明一个具有自定义数据范围的数组。 数据范围由前缀字母 A 或 F 与数字范围的组合描述:A001 - A069,F070 - F660,除了 "GND" - ground lvl 和 UNL - unlimited as first/last 值。所以结构看起来像这样:
altitudeOptions[] = [GND], [A001],.. - ..,[A069], [AF70],.. - ..,[F660], [UNL]
我在考虑像这样删除两个数组:
AltArrayA: number[] = [...Array(69).keys()].map(x => x + 1);
..然后添加前缀字母,连接两个数组 A 和 F,然后将 GND 和 UNL 设置为第一个和最后一个元素。
请帮助我以最佳方式做到这一点。
您可以使用 spread
运算符连接数组。此外,可以使用 Array.from
来设置数组的长度。根据长度,您可以设置零符号:
const arr_A = Array.from({length: 69}, (v, k) => `A` + ((k <= 8 ) ? '00' : '0') + (k + 1));
const arr_F = Array.from({length: 590}, (v, k) => `F` + ((k < 30 ) ? '0' : '') + (k + 70));
const concatenated = ['GND', ...arr_A, 'AF70', ...arr_F, 'UNL'];
一个例子:
const arr_A = Array.from({length: 69}, (v, k) => `A` + ((k <= 8 ) ? '00' : '0') + (k + 1));
const arr_F = Array.from({length: 590}, (v, k) => `F` + ((k < 30 ) ? '0' : '') + (k + 70));
const concatenated = ['GND', ...arr_A, 'AF70', ...arr_F, 'UNL'];
console.log(concatenated)
更新:
此解决方案将 O(n * 2)
复杂度:
const arr_A = Array.from({length: 69}, (v, k) => ( k % 5 == 0) ?
(`A` + ((k <= 8 ) ? '00' : '0') + (k)) : null)
.filter( f => f);
console.log(arr_A)
但是,此解决方案将 O(n)
变得复杂:
const createArray = ( arrLength ) => {
let fooArray = [];
for (let index = 0; index < arrLength; index++) {
if (index % 5 == 0)
fooArray.push(`${index}`);
}
return fooArray;
}
console.log(createArray(69));