javascript - 如何将元素插入到javascript中二维数组的特定索引中?

标签 javascript arrays multidimensional-array

我有一个如下所示的对象

const tableData = [
    {
        
        "Location": "London",
        "Status": "Unknown"
    },
    {
        
        "Location": "Delhi",
        "Status": "Reachable"
    },
    {
        
        "Location": "Berlin",
        "Status": "Unknown"
    },
    {
        
        "Location": "Tokyo",
        "Status": "Busy"
    },
]
现在我想创建一个二维数组,它将以某种方式保存这些信息。这是我下面的代码
const statusOrder = {"Reachable": 0, "Busy": 1, "Unknown": 2}
let statusOrderInfo = Array(Object.keys(statusOrder).length).fill([]);
for(let i=0; i< tableData.length; i++) {
    const status = tableData[i]["Status"].trim()
    const statusIndex = statusOrder[status]
    statusOrderInfo[statusIndex].push(tableData[i])
}
console.log(statusOrderInfo)
如您所见,我想要 tableData 的每个项目对象位于二维数组的某个索引中。所以包含 Status 的项目如Reachable应该在索引 0 处,即包含 Status 的项目如Busy应该在索引 1 处,依此类推。
所以最终的输出应该看起来像
[
   [
      {
         "Location":"Delhi",
         "Status":"Reachable"
      }
   ],
   [
      {
         "Location":"Tokyo",
         "Status":"Busy"
      }
   ],
   [
      {
         "Location":"London",
         "Status":"Unknown"
      },
      {
         "Location":"Berlin",
         "Status":"Unknown"
      }
   ]
]
但是即使我的目标是正确的索引,我在运行上述代码时也会得到错误的输出。我的方法有什么问题?

最佳答案

使用 Array#reduce :

const 
  tableData = [ { "Location": "London", "Status": "Unknown" }, { "Location": "Delhi", "Status": "Reachable" }, { "Location": "Berlin", "Status": "Unknown" }, { "Location": "Tokyo", "Status": "Busy" } ],
  statusOrder = {"Reachable": 0, "Busy": 1, "Unknown": 2};

const statusOrderInfo = tableData.reduce((list, e) => {
  const index = statusOrder[e.Status];
  list[index] = [...(list[index] || []), {...e}];
  return list;
}, []);

console.log(statusOrderInfo);

关于javascript - 如何将元素插入到javascript中二维数组的特定索引中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70478695/

相关文章:

javascript - 使用 React Native 使图像适合 iphone x 上的全屏

javascript - 如何检查 JavaScript 是否已启用并将其纳入网页?

java - 如何拆分带有圆括号的字符串?

c++ - 在 OpenCV 中使用指针检索深度

objective-c - 如何在循环中动态构建这样的 C 数组,返回它并保留引用?

java - 我怎样才能得到一个方阵并将其放入另一个矩阵?

javascript - 下划线将对象转换为数组并按键名排序

javascript - 使用当前元素类作为数组名称?

javascript - 类型化数组和普通数组

java - 如何将二维数组从一个 Activity 传递到另一个 Activity (包括数组包含的所有信息)