为了账号安全,请及时绑定邮箱和手机立即绑定

JQuery 中有没有一种方法可以遍历字符串数组并返回新数组来排序该数组中的匹配字符串?

JQuery 中有没有一种方法可以遍历字符串数组并返回新数组来排序该数组中的匹配字符串?

临摹微笑 2022-12-18 18:51:57
我只是在学习 jQuery,这是我的第一个项目之一,如果这是一个简单的问题,我深表歉意。所以假设我有一个这样的数组:const array = ["electric", "fire", "flying", "electric", "water", "electric", "water", "electric", "fire", "flying", "electric", "water"];在这种情况下,我希望能够返回 4 个新数组,如下所示:[“electric”, “electric”, “electric”, “electric”, “electric”][“fire”, “fire”][“flying”, “flying”][“water”, “water”, “water”] 我已经尝试阅读不同的数组方法和一些以前在这里提出的问题,但我没有看到任何与此相关的内容。
查看完整描述

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));


查看完整回答
反对 回复 2022-12-18
?
莫回无

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);


查看完整回答
反对 回复 2022-12-18
?
繁星点点滴滴

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 );


查看完整回答
反对 回复 2022-12-18
?
www说

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是元素,然后基于以下内容构建生成的对象:

  1. 如果已经有第一个字母的条目,则推送当前元素

  2. 否则,将当前第一个字母和仅包含当前元素的数组关联到该条目

注意:你实际上可以将它减少到一个关联数组,这取决于你哪个更符合你的要求


查看完整回答
反对 回复 2022-12-18
  • 4 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信