繁体   English   中英

在JavaScript中的数组中搜索

[英]search within an array in javascript

我已经尝试了一段时间以在数组中搜索,我查看了所有其他问题,这些问题甚至有些像我的,但没有任何效果,因此,我希望您现在能提供任何帮助。

我有一个比简单的字符串数组更复杂的内部数组

    var elementDefns = [
    {"element":"water", "combos": {"air":"steam", "earth":"sand"} },
    {"element":"fire", "combos": {"earth":"lava", "air":"energy"} },
    {"element":"air", "combos": {"water":"steam", "earth":"dust"} },
    {"element":"earth", "combos": {"water":"swamp", "fire":"lava"} },
];

(用户)选择了两个元素,将它们组合在一起以创建新元素。 我想在元素中搜索可以进行的任何组合。 理想情况下,我想使用Array.prototype.find,尽管我无法弄清楚如何正确使用polyfill,而且我不确定是否正确编写了它,因此它仍然无法正常工作

    var elementOne = $("#board img:first-child").attr('id'); 
    var elementTwo = $("#board img:last-child").attr('id');

    function findElement(element) { 
        return elementDefns.element === elementOne;
    }

木板是ID div,单击该元素卡即可。 我也尝试过循环

    for (var i=0,  tot=elementDefns.length; i < tot; i++) {
            var indexHelp = elementDefns[i].element;
            var find = indexHelp.search(elementOne);
            console.log(find);
        }

我正在尝试发布一个不太长的问题,但是我敢肯定,为了做到这一点,我需要对我的代码进行更多调整。 我想我只是问是否有明显的事情您认为我可以继续进行。 我已经看过了本网站上类似问题的大多数答案,但它们都完全出错了,因此,我们将不胜感激任何其他支持。

我有一个比简单的字符串数组更复杂的内部数组

是的,但是为什么? 摆脱多余的图层,这是微不足道的

var e1 = "water";
var e2 = "air";

var elementDefns = {
    "water": {"combos": {"air":"steam", "earth":"sand"} },
    "fire":  {"combos": {"earth":"lava", "air":"energy"} },
    "air":   {"combos": {"water":"steam", "earth":"dust"} },
    "earth": {"combos": {"water":"swamp", "fire":"lava"} },
};

elementDefns [e1] .combos [e2] =>“ steam”

如果要保留数据结构,可以像这样过滤它:

  var matches = elementDefns
      .filter(e => e.element == first && e.combos[second] !== null)
      .map(e => e.combos[second]);

第一行过滤掉所有匹配项,secon将其映射到实际的匹配字符串(元素名称)。 您所说的find()只是返回匹配的第一个值,我想您想要all ,所以将是filter()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM