Mou*_*iri 1 javascript ecmascript-6
我必须迭代两个数组,如果iso第一个数组的属性等于address.country第二个数组条件被验证,slug则将地址和第二个数组(this.concessions)分配给第一个数组(this.countries).
最后,你需要一个this.countries包含address和slug属性的新数组(除了他已经拥有的属性)
this.countries.map((element) => {
this.concessions.map((value) => {
if (element.iso === value.address.country) {
element.address = value.address
element.slug = value.slug
}
})
})
Run Code Online (Sandbox Code Playgroud)
我如何优化它,例如,对于这种情况,最好的可迭代使用的for ..of是什么?
只需使用地址映射:
const dataByCountry = new Map();
for(var {address, slug} of this.concessions)
dataByCountry.set(address.country, {address, slug});
Run Code Online (Sandbox Code Playgroud)
所以现在寻找一个让步是O(1):
for(var country of this.countries){
const {address, slug} = dataByCountry.get(country.iso);
if(address && slug){
country.address = address;
country.slug = slug;
}
}
Run Code Online (Sandbox Code Playgroud)
正如我们反复国家曾经和让步一次,时间复杂度为O(n + m)地方n和m是数组的长度.然而,这种性能增益是在高内存使用的情况下实现的.
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |