javascript - 检查来自不同数组的两个元素的一个属性是否相等?

标签 javascript arrays

目前我一直在使用嵌套的for循环来解决这个问题:

for (var i = 0; i < this.props.trackedPlayers.length; i++)
{
    for (var j = 0; j < PHP_VARS.players_data.length; j++)
    {
        // This check here is the key part
        if (PHP_VARS.players_data[j]._id == this.props.trackedPlayers[i]._id)
        {
            data.push(// stuff from both arrays..);
        }
    }
}

但是我想可能已经有一个样板函数可以做到这一点。进行了几次搜索,但没有搜索到 - 任何指示,或者这是我目前所获得的最好的搜索结果?

编辑:简要说明,trackedPlayers 均来自 players_data。通过检查(通常)较大的 players_data 中的每个玩家是否在 trackedPlayers 中,我知道是否将它们列为“添加”到 HTML 选择字段的选项。

最佳答案

您可以使用一个对象作为哈希表并遍历两个数组,首先用于构建哈希表,第二个用于测试和进一步操作。

var object = Object.create(null);
this.props.trackedPlayers.forEach(function (a) {
    object[a._id] = a;
});
PHP_VARS.players_data.forEach(function (a) {
    if (object[a._id]) {
        // access data from this.props.trackedPlayers
        // with object[a._id]._id as example
        // access data from  PHP_VARS.players_data
        // with a._id as example
        data.push(/* stuff from both arrays..*/);
    }
});

关于javascript - 检查来自不同数组的两个元素的一个属性是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103667/

相关文章:

javascript - 如何让使用 document.write() 创建的 JavaScript 执行?

python - 在 numpy 数组上使用两个索引数组

javascript - 计算数组中的组合产品

javascript - Fullcalendar 2 与 Bootstrap 3 和 Rails 4 不兼容吗(我真的需要帮助...几天)

javascript - 在 mongo 中查找上周创建的对象

javascript - 如何识别字符串中的第一个字符是否是Javascript中的数字

javascript - 将 Json 数据作为单个对象而不是一个长数组推送

java - 为什么我会得到这个奇怪的输出 Hand@2802cf63?

Javascript click() 不适用于移动设备

javascript - 使用 Javascript 硬刷新页面