我試圖從陣列中洗掉已經存在于較長專案中的專案。 例如,如果我有兩個專案'Knowledge base'和'base',我想洗掉'base',如果我有知識管理多次,我想留下所有專案,除非有一個專案包含這兩個詞,但它更長,例如'知識管理書'。
按長度對專案進行排序很容易,但我不確定如何檢查,例如'基地'是否已經存在于較長的術語('知識庫')中
。因此,在下面的例子中,希望的解決方案是:
const items = ['知識庫', '知識管理', '知識管理']
const items = ['Knowledge base', 'base', '管理', '知識管理', '知識', '知識', '知識管理']
const newItems = items.sort((a,b) => /span> b. length - a.length)
console.log(newItems)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
你可以使用Array.filter()連同Array.some()來過濾任何包含在其他專案中的專案。
const items = ['Knowledge base', 'base', '管理', '知識管理', '知識', '知識', '知識管理'] 。
const result = items.filter(item => !items. some(it => it !== item && it.includes(item)))。
console.log('Result:', result);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
用一些方法過濾,用包括的方法驗證
const items = ['Knowledge base', 'base', '管理', '知識管理', '知識', '知識', '知識管理'] 。
const newItems = items.filter((item) => /span> {
return !items.some((iChecker) => {
return iChecker !== item && iChecker.includes( item)
}
)
}
);
console.log( { newItems } );
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310785.html
標籤:
