簡體   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