Javascript 在嵌套数组/对象中查找对象的最快方法
我有以下对象数组,这些对象在一个属性上也有一个数组:Javascript 在嵌套数组/对象中查找对象的最快方法,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有以下对象数组,这些对象在一个属性上也有一个数组: const boards = [ { id: 1, name: 'Lorem ipsum', tasks: [ { id: 42, ... }, { id: 65, ... }, { id: 24, ... }, ], }, { id: 2, name: 'Lorem ipsum', tasks: [ { id: 12, ...
const boards = [
{
id: 1,
name: 'Lorem ipsum',
tasks: [
{ id: 42, ... },
{ id: 65, ... },
{ id: 24, ... },
],
},
{
id: 2,
name: 'Lorem ipsum',
tasks: [
{ id: 12, ... },
{ id: 85, ... },
{ id: 14, ... },
],
},
];
我正在寻找最佳和最有效的方法来查找任务的索引(当然还有它所在的董事会)。我提出了以下建议,但我想知道在查找任务
时,这是否真的是最有效的方法,尤其是当您有一个大型数据集时,或者是否有更好的方法进行搜索
在我的特殊情况下,将不会有很多板(大多数情况下不会超过10个,但可能有数百个任务)
在板中创建任务及其关联索引的新查找表
:
var taskIds = {
12: 1,
85: 1,
14: 1,
42: 0,
65: 0,
24: 0
};
从那里,只需查找任务和相关板即可O(1)
*2
使用Lodash的示例:
var taskIds = {};
_.each(boards, function(board, index) {
_.each(board.tasks, function(task) {
taskIds[task.id] = index;
});
});
现在,您可以通过任务索引在固定时间内轻松找到一块板:
boards[taskIds[65]
var taskIds = {};
_.each(boards, function(board, index) {
_.each(board.tasks, function(task) {
taskIds[task.id] = index;
});
});