【发布时间】:2021-10-18 17:20:19
【问题描述】:
我正在使用一个返回服务支付选项的 API。付款方式为(1 年服务,按月支付),(1 年服务,预付),(2 年服务,按月支付),(2 年服务,预付)。数据通过以下方式返回:
options = [
{ price: 10,
serviceLength: "1 year",
paymentFrequency: "monthly payment",
},
{ price: 100,
serviceLength: "1 year",
paymentFrequency: "one-time payment",
},
{ price: 8,
serviceLength: "2 year",
paymentFrequency: "monthly payment",
},
{ price: 150,
serviceLength: "2 year",
paymentFrequency: "one-time payment",
},
]
我需要以将 1 年服务选项和 2 年服务选项组合在一起的方式显示数据。像这样的:
1 年服务
- 每月 - $XX.XX
- 预付款:$XX.XX
2 年服务
- 每月 - $XX.XX
- 预付款:$XX.XX
为此组织数据的最佳方式是什么?未来可能会增加更多的价格选项。我在考虑有一个函数来分离年份长度,然后有一个双 for 循环来显示选项?
类似:
oneYearOptions = [
{ price: 10,
serviceLength: "1 year",
paymentFrequency: "monthly payment",
},
{ price: 100,
serviceLength: "1 year",
paymentFrequency: "one-time payment",
},
twoYearOptions = [
{ price: 8,
serviceLength: "2 year",
paymentFrequency: "monthly payment",
},
{ price: 150,
serviceLength: "2 year",
paymentFrequency: "one-time payment",
},
];
const allOptions = [oneYearOptions, twoYearOptions];
然后角度 ts 将类似于:
<div *ngFor="let option of allOptions>
<div *ngFor="let priceOption of priceOptions">
{{ list the data in here }}
</div>
</div>
这对我来说只是效率低下。有一个更好的方法吗?也许改用哈希图?
【问题讨论】:
-
坦率地说,考虑到您无法控制 API 返回数据格式,这似乎是一种合理的完成方式。通过不必将数组拆分为多个数组,您也许可以节省一些内存,但我认为没有必要这样做。至于速度性能,您将不得不遍历每个项目并显示它,因此您不能做得比“遍历每个项目”更好。
-
如果您可以更改数据,如果您愿意,可以在一个循环中完成。您可以拥有一个包含对象的数组,其中对象可以具有诸如“标题”或选项之类的类型(其中选项是您现在拥有的对象)。
标签: javascript arrays angular multidimensional-array data-structures