[英]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.