js陣列如何去重合併?

時間 2021-06-02 05:45:28

1樓:ShellBin

現有的回答感覺都無端複雜了,甚至還有乙個並不符合格式要求的,我來寫乙個吧(x

從描述來看,需要把兩個陣列的第一項連線,後面的專案去重,但去重的每一項又被作為陣列包裹並作為結果返回。

我的實現是:

const

originalArray

=[[[

'工具'

],'U'

,'B'

,'U'

,'I'

],[[

'學習'

],'U'

,'I'

,'U'

,'B'

]]function

unique

(arr

)// 對去重後的每一項加一層陣列包裹

return

uniqueArray

}console

.log

(unique

(originalArray

))執行後的返回:

[ '工具學習', [ 'U' ], [ 'B' ], [ 'I' ] ]

現在的寫法有個小缺點:在新增陣列包裹時,每次對陣列進行新增操作都會改變陣列的長度,這對效能是有那麼一丟丟影響,不過如果資料量不大那沒事。

2樓:sjx233

很慢,但能用。

3樓:Mrchen

let arr = [

['工具',[['U'],['B'],['U'],['I']]],['學習',[['I'],['B'],['I'],['U']]]],newArr = [...new Set(arr.join().

split(','))];

4樓:阿飄阿飄啊

vararr=[[

'工具'

,[['U'

],['B'

],['U'

],['I'

]]],

['學習'

,[['I'

],['B'

],['I'

],['U'

]]]]

Array

.from

(new

Set(

arr.

join

().split

(',')))

5樓:熊爸爸科技工坊

這不是很簡單麼,看我兩行搞定,不需要第三方庫哦const

originalArray=[

[['工具'

],'U'

,'B'

,'U'

,'I'

],[[

'學習'

],'U'

,'I'

,'U'

,'B'],]

// 上面的不算哦

const

transformedArray

=[...

newSet

(originalArray

.flat(10

))]好了完成,就是這麼簡單

有圖為證

6樓:抬一手

const

arr=[[

"工具",[[

"U"],

["B"],[

"U"],

["I"

]]],

["學習",[[

"I"],

["B"],[

"I"],

["U"

]]]];

function

getArrNames

()return

names;}

function

arrFlat

(idx

)function

unique

()const

namesArray

=getArrNames

();const

arrayTools

=arrFlat(0

);const

arrayLearn

=arrFlat(1

);const

mergeNames

=namesArray

.join(''

);const

uniqueArray

=Array

.from

(new

Set(

unique

())).

sort

();const

result=[

mergeNames,[

uniqueArray

]];console

.log

(result

);我試一下。。。

新陣列的每個元素在舊陣列的位置(JS實現)?

已重置 陣列中不能有null,undefined 可以這樣做,可能還會有其它bug吧 有乙個陣列,我在它排序之前複製一次,然後排序,然後比較兩個陣列,看一下它們的索引值是如何變動的 得到新陣列的每個元素原來是在舊陣列的什麼位置上vara 5,4,7,1,3,1,9,2,2,true false 0 ...

js陣列和物件哪個效率高

龍騰道默默地 無論採用哪種方式,請不要忘記學生名字是可能重複的。這在物件機制下會造成硬錯誤,而在陣列模式下雖然不會出現寫覆蓋,但如果不加注意,也會出現讀丟失的潛在危險。無論採用哪個,在效能攸關時,都可以附加乙個額外的 反向 索引快取。 nighca 乙個物件加乙個陣列啊,物件就像題主說的用name做...

php可以讓陣列像js一樣使引數的陣列一直指向a嗎

黃YH PHP中,傳參是乙個方法.也可以定義乙個物件,然後實現ArrayAccess的介面,就可以基本實現你的需求啦 官方文件 http php.net manual en class.arrayaccess.php xiey 對於js來說,函式傳參都是值傳遞,陣列物件也一樣。如果你在函式內部重寫a...