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...