javascript - 创建重复的js数组

标签 javascript arrays

例如:我的数组如下所示:

let arr = [{
    name: "Peter"
}, {
    name: "Peter"
}, {
    name: "John"
}, {
    name: "Peter"
}, {
    name: "Sarah"
}, {
    name: "John"
}]

我需要创建数组,它看起来像这样:

let dupArray = [
    [{
        name: "Peter"
    }, {
        name: "Peter"
    }, {
        name: "Peter"
    }],
    [{
        name: "John"
    }, {
        name: "John"
    }],
    [{
        name: "Sarah"
    }]
]

再说一遍,这不是关于复制,而是关于创建重复分组的新数组。

最佳答案

将它们简化为 Map 并获取值():

let arr = [{
  name: "Peter"
}, {
  name: "Peter"
}, {
  name: "John"
}, {
  name: "Peter"
}, {
  name: "Sarah"
}, {
  name: "John"
}];

let dupArr = 
    [...arr.reduce((a,b) => 
        a.set(b.name , (a.get(b.name) || []).concat(b)),
     new Map()).values()];

console.log(dupArr);

关于javascript - 创建重复的js数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45691355/

相关文章:

javascript - 将一个元素置于具有相同 z-index 的其他元素之前

java - 创建一个 Student 将其传递给 SQL 对象并在线程 "AWT-EventQueue-0"lang.ArrayIndexOutOfBoundsException : 4 中获取异常

c# - 字符转换为位图图像 C#

php - PHP 和 JavaScript 表单验证脚本的问题

javascript - 返回 document.write 中的 Javascript 函数 ('<a href="">')

c - 数组的长度

java - 如何访问 Hashmap 中字符串数组中的单个值?

php - PHP array() 构造的 "value"部分可以包含什么?

javascript - 哪种预加载器是首选 - 基于图像、CSS 还是 JavaScript?

javascript - Handlebars - 错误 : each doesn't match else