4 回答

TA貢獻1921條經驗 獲得超9個贊
您可以使用簡單map的方法對項目進行分組:
const array = ["electric", "fire", "flying", "electric", "water", "electric", "water", "electric", "fire", "flying", "electric", "water"];
let map = {};
for(let i = 0; i < array.length; i++){
let item = array[i];
if(!map[item])
map[item] = [ item ];
else
map[item].push(item);
}
console.log(Object.values(map));

TA貢獻1865條經驗 獲得超7個贊
您可以使用Array#reduce一個對象來存儲數組中的每個元素,從而創建一個數組數組。
const array = ["electric", "fire", "flying", "electric", "water", "electric", "water", "electric", "fire", "flying", "electric", "water"];
const res = Object.values(
array.reduce(
(acc,curr)=>((acc[curr]=acc[curr]||[]).push(curr), acc), {}
)
);
console.log(res);

TA貢獻1803條經驗 獲得超3個贊
歡迎來到堆棧溢出。希望你喜歡這里。隨意參加導覽并查看如何提供最小的、可重現的示例
您可以使用數組.map()
和.filter()
方法——您真的不需要為此使用 jQuery——如下所示:
let chunks = array.map(a => array.filter(x => x === a)) .filter((item, index) => array.indexOf(item[0]) === index);
const array = ["electric", "fire", "flying", "electric", "water", "electric", "water", "electric", "fire", "flying", "electric", "water"];
let chunks = array.map(a => array.filter(x => x === a)).filter((item, i) => array.indexOf(item[0]) === i);
console.log( chunks );

TA貢獻1775條經驗 獲得超8個贊
這應該工作:
const array = ["electric", "fire", "flying", "electric", "water", "electric", "water", "electric", "fire", "flying", "electric", "water"]
console.log(array.reduce((acc, el) => {
acc[el.charAt(0)] = acc[el.charAt(0)] ? [...acc[el.charAt(0)], el] : [el];
return acc
}, {}))
您reduce
是元素,然后基于以下內容構建生成的對象:
如果已經有第一個字母的條目,則推送當前元素
否則,將當前第一個字母和僅包含當前元素的數組關聯到該條目
注意:你實際上可以將它減少到一個關聯數組,這取決于你哪個更符合你的要求
添加回答
舉報