优化以下代码 : if (nameAr.length > 0) { nameAr.forEach(nm => { sortList.forEach(te => { if (te.name == nm) { let obj = { type: 'LineString', coordinates: [] } te.lineString.forEach(ls => { // console.log(ls, 'lslslsl'); let linel if (ls.lineList) { linel = ls.lineList } else { linel = ls.trackList } linel.forEach(ne => { let pt = JSON.parse(ne.geom) obj.coordinates.push(pt.coordinates) }) }) resultLineArr.push(obj) } }) }) } else { sortList.forEach(te => { let obj = { type: 'LineString', coordinates: [] } te.lineString.forEach(ls => { // console.log(ls, 'lslslsl'); let linel if (ls.lineList) { linel = ls.lineList } else { linel = ls.trackList } linel.forEach(ne => { let pt = JSON.parse(ne.geom) obj.coordinates.push(pt.coordinates) }) }) resultLineArr.push(obj) }) }
时间: 2024-03-12 21:43:45 浏览: 18
可以尝试以下优化:
1. 可以使用Array.prototype.filter()来替换if语句进行筛选,这样可以减少代码嵌套层次,让代码更加简洁易懂。
2. 可以使用Array.prototype.flatMap()方法,将嵌套的forEach()循环展开,这样可以省略中间数组的声明,减少代码量。
3. 可以使用对象解构赋值来直接获取对象中的属性,避免多次访问同一个属性的重复代码。
4. 可以使用箭头函数来简化代码。
优化后的代码如下:
```javascript
const resultLineArr = [];
const lineList = sortList.flatMap(({ lineString }) => lineString.flatMap(({ lineList, trackList }) => (lineList || trackList || []).flatMap(({ geom }) => JSON.parse(geom).coordinates)));
const lineMap = new Map(sortList.map((te) => [te.name, te]));
nameAr.forEach((nm) => {
if (lineMap.has(nm)) {
const { lineString } = lineMap.get(nm);
const coordinates = lineString.flatMap(({ lineList, trackList }) => (lineList || trackList || []).flatMap(({ geom }) => JSON.parse(geom).coordinates));
resultLineArr.push({ type: 'LineString', coordinates });
}
});
if (nameAr.length === 0) {
resultLineArr.push({ type: 'LineString', coordinates: lineList });
}
```
这个优化后的代码使用了flatMap()方法、Map对象和解构赋值来简化代码,并且去掉了冗余的if语句,使得代码更加简洁易懂。