编辑:不要这样做。这是我刚接触编程时尝试做的一种愚蠢的方式
我有一个像这样配对的数组中的32条数据的列表
"foo:bar","baz:example","cat:dog"
我想遍历该数组并在与用户输入匹配的那对上停止。因此,例如,如果用户键入“ foo”,则将分别返回“ foo”和“ bar”,如果用户键入“ bar”,则将同时返回“ foo”和“ bar”。没有重复的值。
现在,我的表是一个巨大的表if
。因此if
,用户的输入是x,那么它将返回正确的值。我必须手动进行匹配,并且我假设遍历数组直到找到正确的值比64个不同的if
s更有效。
我已经尝试过使用两个单独的数组进行如下操作(仅作为示例):
for (var i=0;i<array.length;i++) {
if (array[i] === user_input) {
var index = indexOf(array[i]);
break;
}
}
然后使用该index
变量作为每个数组中值的索引号,但是它返回undefined
我也尝试过这样:将键和值对分成两个数组
但这给了我数组中所有不需要的值。我只想要用户输入的一个特定值。虽然我可以使用索引号选择数组的一个特定部分,但我不知道如何使它动态化(例如,根据用户输入的内容进行更改)。
甚至有可能做到这一点?如果没有,最好的方法是什么?
谢谢。
你可以这样做:
function getPair(arr, search) {
var rtn = arr.filter(function (v, i) {
return new RegExp("\\b" + search + "\\b").test(v);
})[0];
return rtn ? rtn.split(':') : -1;
}
像这样使用它:
var array = ["foo:bar","baz:example","cat:dog"];
getPair(array, "foo"); // ["foo","bar"]
注意:-1
如果在数组中未找到搜索字符串,则上述函数将返回。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句