javascript - 数组的复杂问题

标签 javascript arrays solver

我有一个复杂的问题需要解决。
我有一个如下所示的数组:

var array = [
             ["1hszZhsez7", 0, "mb12", 0],
             ["87hJKLi893", 1, "tt43", 0],
             ["jchd79dcic", 1, "tt43", 2],
             ["as0w9ejasm", 1, "tt43", 1],
             ["coosihchw9", 0, "zz00", 0],
             ["vs0x0j9ndm", 1, "uu33", 0],
             ["00s0kd20r7", 1, "uu33", 2],
             ["xassdwddao", 1, "uu33", 1],
             ["caosw8ncxc", 2, "uu33", 0]
            ];   

这个数组总是有不同的值。让我们进去吧。
该数组基本上具有以下值:

var array = [
             [id, type, code, priority]
            ];      

id:id 是唯一的。没什么特别的。
类型:共有三种不同的类型。 0、1 和 2。
代码:代码不是唯一的。多个数组项可以相同。
priority:优先级是一个数字。如果数字低,则优先级高。如果数字很大,则优先级较低。


任务:
首先,我们需要将不同的类型排序到不同的数组中。所以它看起来像这样:

var type_zero = [
                 ["coosihchw9", 0, "zz00", 0]
                ];   

var type_one = [
                 ["87hJKLi893", 1, "tt43", 0],
                 ["jchd79dcic", 1, "tt43", 2],
                 ["as0w9ejasm", 1, "tt43", 1],
                 ["vs0x0j9ndm", 1, "uu33", 0],
                 ["00s0kd20r7", 1, "uu33", 2],
                 ["xassdwddao", 1, "uu33", 1]
                ];  
 
var type_two = [
                 ["caosw8ncxc", 2, "uu33", 0]
                ];  

这个函数很简单:

 array.forEach(function(item) {
      if (item[1] === 0) {
        type_zero.push([item[0], item[1], item[2], item[3], item[4], item[5]]);
      }
      else if (item[1] === 1) {
        type_one.push([item[0], item[1], item[2], item[3], item[4], item[5]]);
      }
      else if (item[1] === 2) {
        type_two.push([item[0], item[1], item[2], item[3], item[4], item[5]]);
      }
    });     

但接着就开始头疼了。我们需要为每个代码组创建一个单独的数组。但我们永远不知道有多少不同的代码。所以我们不能制作静态数组。
无论我们使用哪种代码。最后,它应该看起来像这样,基于我们的示例数组

var type_zero_zz00 = [
                      ["coosihchw9", 0, "zz00", 0]
                     ];

var type_one_tt43 = [
                      ["87hJKLi893", 1, "tt43", 0],
                      ["jchd79dcic", 1, "tt43", 2],
                      ["as0w9ejasm", 1, "tt43", 1],
                     ];

 var type_one_uu33 = [
                      ["vs0x0j9ndm", 1, "uu33", 0],
                      ["00s0kd20r7", 1, "uu33", 2],
                      ["xassdwddao", 1, "uu33", 1]
                     ];
      
 var type_two_uu33 = [
                      ["caosw8ncxc", 2, "uu33", 0]
                     ];  

为什么我需要这些数组?在下一步中,我必须为每个数组列表执行一个 forEach 循环才能继续。我希望有人知道解决方案,因为这个问题困扰了很多天,而且不可能的想法越来越大。
提前致谢,
马吕斯

最佳答案

我看到您只需要创建函数来获取所需的信息,而不是创建大量不同的变量。

低于您需要完成的事情的想法,而不是您需要的 100% 准确版本

var array = [
             ["1hszZhsez7", 0, "mb12", 0],
             ["87hJKLi893", 1, "tt43", 0],
             ["jchd79dcic", 1, "tt43", 2],
             ["as0w9ejasm", 1, "tt43", 1],
             ["coosihchw9", 0, "zz00", 0],
             ["vs0x0j9ndm", 1, "uu33", 0],
             ["00s0kd20r7", 1, "uu33", 2],
             ["xassdwddao", 1, "uu33", 1],
             ["caosw8ncxc", 2, "uu33", 0]
            ];   
            
   function getByCode(code){
       return array.filter( item => item[1] === code);
   }
   
   function getByGroup(group){
       return array.filter( item => item[2] === group);
   }

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

相关文章:

java - 按值和索引搜索数组

solver - Modelica 事件和混合建模

python - 使用 sympysolve 命令时显示一定范围内的解

matlab - 如何在 MATLAB 中使用 fzero() 求解多项式方程?

javascript - 如何在 JavaScript 中将 {"name":"myName","value":"myValue"} 对象的数组转换为 "myName":"myValue"对的对象?

javascript - 处理绝对位置元素上的过渡插入其他元素

javascript - 错误 : THREE. PlaneBufferGeometry 不是构造函数

C - 创建 "2D Array"时出现段错误

java - 数组返回为空而不是数字列表

javascript - 根据类和元素类型选择元素