【问题标题】:Convert array to sub arrays based on their count in JavaScript/jQuery? [closed]根据 JavaScript/jQuery 中的计数将数组转换为子数组? [关闭]
【发布时间】:2018-04-13 17:54:22
【问题描述】:

如何根据 JavaScript 或 jQuery 中的元素值计数将我的数组转换为子数组?

例如:

var myArray=["a","b","c","a","a","c","b"];

计算元素 a、b 和 c 后的预期输出

outputArray=[["a",3],["b",2],["c",2]];

【问题讨论】:

标签: javascript jquery arrays sub-array


【解决方案1】:

您可以使用 reduce() 和 ES6 Map() 并传播语法 ...

var myArray=["a","b","c","a","a","c","b"];

var result = [...myArray.reduce(function(r, e) {
  return r.set(e, !r.get(e) ? 1 : r.get(e) + 1)
}, new Map())]

console.log(result)

【讨论】:

  • Nice!!,看你使用 ES6,箭头函数会让它看起来更漂亮。 var result = [...myArray.reduce((r, e) => r.set(e, !r.get(e) ? 1 : r.get(e) + 1), new Map())]
  • 感谢它完美运行@nenad
【解决方案2】:

如果你想以自己的方式解决问题,那就试试吧

var myArray=["a","b","c","a","a","c","b"];
var obj = [];
for (var i = 0, j = myArray.length; i < j; i++) {
   obj[myArray[i]] = (obj[myArray[i]] || 0) + 1;
}
var finalArr = [];
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        var arr = [];
        arr.push(key);
        arr.push(obj[key]);
        finalArr.push(arr);
    }
}
console.log(finalArr);

【讨论】:

    【解决方案3】:
    function countLetters(arr) {
        return arr.reduce(function(r, e) {
            r[e] = (r[e] || 0) + 1;
            return r;
        }, {});
    }
    

    另一种方法

    【讨论】:

    • 您应该按照用户想要的方式回答问题,然后给出您的输入和替代方法。我没有投反对票,但很可能是谁投的票,这就是原因。
    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多