java脚本2D数组查找唯一的数组组合

时间:2017-12-01 05:57:20

标签: javascript

我需要知道获得以下结果的最佳方式

courseFrequency : [
{
      'courses': [
        'a.i'
      ],
      'count' : 1
},
{
      'courses': [
        'robotics'
      ],
      'count' : 2

},
{
      'courses': [
        'software engineering', 'a.i'
      ],
      'count' : 2         
},
    {
      'courses': [
        'software engineering', 'a.i','robotics'
      ],
      'count' : 1
}

来自以下json数据。

arr = [
    {
      'courses': [
        'a.i'
      ]
    },
    {
      'courses': [
        'robotics'
      ]
    },
    {
      'courses': [
        'software engineering', 'a.i'
      ]
    },
    {
      'courses': [
        'robotics'
      ]
    },
    {
      'courses': [
        'software engineering', 'a.i'
      ],

      'courses': [
        'software engineering', 'a.i','robotics'
      ]       

    }];

基本上我需要找出独特的课程及其频率。最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

const hash = {}, result = [];

for(const {courses} of arr){
  const k = courses.join("$");
  if(hash[k]){
    hash[k].count++;
  } else {
    result.push(hash[k] = { courses, count : 1 });
  }
}

只需使用hashmap查找重复项即可。由于数组是通过引用进行比较的,我们需要将它连接到一个字符串以进行引用(请注意,如果coursename包含连接符号($),这将失败)

答案 1 :(得分:0)

它们都是最适合与它们相关的区域。这些概念正在酝酿自己的属性和方法来完成某些任务,例如用于数据传输和交叉浏览方面的JSON作为常见类型数据值。阵列非常好在存储有序列表和订购时,同时删除/拼接元素的成本要高一些。

JSON是数据结构的表示,它不是对象或数组。 例如,JSON可用于将数据从服务器发送到浏览器,因为JavaScript很容易解析为普通的JavaScript数据结构。要对JSON数据执行操作,您需要将其转换为对象,缝了一些像ARRAY这样的房产。 数组在存储有序列表和排序时非常擅长,而删除/拼接元素的成本要高一些。

Relative link

Relative link