如何在JavaScript中按索引对双重嵌套数组进行分组?
实现方法
作为JS新手,用filter()方法是最直观易懂的方式,直接根据子数组的第一个元素来筛选分组:
var mixedArray = [["online","abc","def"],["offline","ghi","jkl"],["online","mno","pqr"],["offline","stu","vwx"]]; // 提取所有"online"开头的子数组 var array1 = mixedArray.filter(item => item[0] === "online"); // 提取所有"offline"开头的子数组 var array2 = mixedArray.filter(item => item[0] === "offline");
运行之后,array1就是你要的在线数组,array2是离线数组,完全符合需求。
补充说明
如果你还没接触过箭头函数,换成普通函数写法也一样能用:
var array1 = mixedArray.filter(function(item) { return item[0] === "online"; });
要是以后需要按更多状态(比如"idle")分组,推荐用reduce()一次性完成,扩展性更强:
// 用reduce把数组按状态分组到对象里 var grouped = mixedArray.reduce((obj, item) => { const status = item[0]; // 如果对象里没有对应状态的数组,先创建空数组 if (!obj[status]) obj[status] = []; // 把当前子数组加到对应状态的数组里 obj[status].push(item); return obj; }, {}); // 从分组对象里取出需要的数组 var array1 = grouped.online; var array2 = grouped.offline;
内容的提问来源于stack exchange,提问作者Fkofree 19
相关产品推荐
相关产品推荐

