javascript - 数组值替换为对应的id

标签 javascript node.js loops for-loop

我有一个人物对象数组,其中包含:

  • (人的)id
  • (人的)姓名
  • 喜欢(他们喜欢的人的 ID)

.

array = [{ id:1, name:"Adam", likes:2 },{ id:2, name:"Ben", likes:3 },{ id:3, name:"Cindy", likes:1 }];

最终的数组应该将他们喜欢的人的 id 替换为他们的名字

array = [{ id:1, name:"Adam", likes:"Ben" },{ id:2, name:"Ben", likes:"Cindy" },{ id:3, name:"Cindy", likes:"Adam" }];

当前解决方案:

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;
        };
    };
};

除了使用 2 个循环之外,还有更有效的方法吗?

最佳答案

这是 O(n) 方法:

 const byID = new Map(array.map(u => [u.id, u]));

 for(const u of array)
   u.likes = byID.get(u.likes);

通过在 O(n) 中构建 Map,查找的时间复杂度为 O(1),因此整个操作的执行时间为 O(n) + O(1 * n) = O(n)。

关于javascript - 数组值替换为对应的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425618/

相关文章:

javascript - 当单选按钮客户端检查更改时使用 JQuery 调用函数

mysql - 在 sequelize 中检查 mysql 连接

javascript - Nodejs 将值从一个模块传递到另一个模块

php - 如何检测我所在的类别页面的 slug? (WooCommerce)

arrays - bash:如何更新隐式子 shell 中的关联数组?

php - 从 PHP 调用 JavaScript 函数

javascript - 使用 dojo AMD 加载条件模板 (html)

arrays - perl foreach 循环数组,简单的问题

javascript - React Native Firebase 身份验证错误处理

node.js - npm install 全局化 - E_MISSING_BUNDLE