2 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
一些自稱的最佳實(shí)踐:
當(dāng)您不需要索引時(shí),盡可能避免使用 for 循環(huán)。(參見(jiàn)forEach等)。這樣可以減少污染眼睛的變量。
盡早“繼續(xù)”或“返回”以避免嵌套內(nèi)容(例如
return links
先出現(xiàn))盡量減少變量的范圍。這也是通過(guò)使用 forEach 來(lái)實(shí)現(xiàn)的
function nameTooLong(data, existingLinks, linkSetter) {
const moreLinks = data.reduce((links, item) => {
if (item.activitiesafter[0] === "DEFAULT") {
return links
}
item.activitiesafter.forEach(activity => {
links.push({
source: item.itemname,
target: activity,
type: "activity-activity-after"
})
})
return links
}, [])
return linkSetter(_ => existingLinks.concat(moreLinks))
}
nameTooLong([{
itemname: "Hello World",
itemtype: "activity",
activitiesafter: ["Do Stuff", "Do Other Stuff"]
},{
itemname: "shold be ignored",
itemtype: "activity",
activitiesafter: ["DEFAULT", "nothing there"]
}], ['toto'], (fn) => console.log('newlinks: ', fn()))
如果您閱讀 3.,我們可以做得更好,甚至可以避免使用flatMap操作變量鏈接
function nameTooLong(data, existingLinks, linkSetter) {
const moreLinks = data.flatMap(item => {
if (item.activitiesafter[0] === "DEFAULT") {
return []
}
return item.activitiesafter.map(activity => ({
source: item.itemname,
target: activity,
type: "activity-activity-after"
}))
})
return linkSetter(_ => existingLinks.concat(moreLinks))
}
nameTooLong([{
itemname: "Hello World",
itemtype: "activity",
activitiesafter: ["Do Stuff", "Do Other Stuff"]
},{
itemname: "shold be ignored",
itemtype: "activity",
activitiesafter: ["DEFAULT", "nothing there"]
}], ['toto'], (fn) => console.log('newlinks: ', fn()))

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
push 函數(shù)僅適用于數(shù)組,不適用于對(duì)象。
而且由于我認(rèn)為沒(méi)有任何理由linkLineItems
需要成為一個(gè)對(duì)象,我建議您只需通過(guò)初始化它來(lái)使其成為一個(gè)數(shù)組let linkLineItems = [];
。
添加回答
舉報(bào)