Har*_*rry 2 javascript loops for-loop node.js
我有一系列的人对象,其中包括:
。
array = [{ id:1, name:"Adam", likes:2 },{ id:2, name:"Ben", likes:3 },{ id:3, name:"Cindy", likes:1 }];
Run Code Online (Sandbox Code Playgroud)
最终数组应将其喜欢的人的ID替换为其姓名
array = [{ id:1, name:"Adam", likes:"Ben" },{ id:2, name:"Ben", likes:"Cindy" },{ id:3, name:"Cindy", likes:"Adam" }];
Run Code Online (Sandbox Code Playgroud)
当前解决方案:
for(let i=0;i<array.length;i++){
for(let j=0;array.length;j++){
if(array[i].likes == array[j].id){
array[i].likes = array[j].name;
};
};
};
Run Code Online (Sandbox Code Playgroud)
除了使用2个循环以外,还有其他更有效的方法吗?
这是O(n)的方式:
const byID = new Map(array.map(u => [u.id, u]));
for(const u of array)
u.likes = byID.get(u.likes);
Run Code Online (Sandbox Code Playgroud)
通过在O(n)中构建Map,查找得到O(1),因此整个操作将在O(n)+ O(1 * n)= O(n)中执行。
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |