使用for循环将键值对分隔为两个变量
Separating key value pairs into two variables with for loop
编辑:不要这样做。这是我刚开始编程时尝试过的一种愚蠢的方法
我有一个数组中包含32个数据的列表,它们像这样配对
"foo:bar","baz:example","cat:dog"
,我想循环遍历该数组,并停在与用户输入匹配的那对上。例如,如果用户输入"foo"它会分别返回"foo"answers"bar"如果用户输入"bar"它会同时返回"foo"answers"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
。
这是一个遍历数组的函数,并检查user_input
是否在任何地方。如果是,它将返回找到匹配的字符串。
function getPair(array, user_input) {
for (var i=0;i<array.length;i++) {
var pair = array[i].split(':');
if (pair.indexOf(user_input) >= 0) {
return pair;
}
}
return [];
}
var array = ["foo:bar","baz:example","cat:dog"];
getPair(array, "foo"); //will return ['foo', 'bar']
getPair(array, "bar"); //will return ['foo', 'bar']
getPair(array, "dog"); //will return ['cat', 'dog']
getPair(array, "zzz"); //will return []
我建议使用对象。首先,转换数组:
var pair,obj1={},obj2={};
for (var i=0;i<array.length;i++) {
pair=array[i].split(":");
obj1[pair[0]]=pair[1];
obj2[pair[1]]=pair[0];
}
这将给你以下对象:
obj1={
"foo":"bar",
"baz":"example",
"cat":"dog"
};
obj2={
"bar":"foo",
"example":"baz",
"dog":"cat"
};
然后根据用户输入:
if (obj1[user_input]) {return [user_input,obj1[user_input]];}
else if (obj2[user_input]) {return [obj2[user_input],user_input];}
else return undefined;
现场演示:http://jsfiddle.net/x23qG/
相关文章:
- 在HTML包围的javascript中添加两个变量
- 填写表单后替换两个变量
- 用于交换两个变量的 JavaScript 函数
- 使用一个表达式将两个变量分配给相同的值
- 如何添加两个变量而不使其在javascript中连接
- 有可能让两个变量指向同一个对象吗?(javascript)
- 带有两个变量函数的Ajax提交表单
- 将两个变量的值加在一个变量中
- 如何使用javascript获取两个变量的最高值
- 如何从字符串中获取两个变量
- 测试两个变量是否包含一些数据 JavaScript
- 将两个变量从php发送到javascript
- 如何在javascript中计算两个变量的百分比
- 连接两个变量
- Javascript变量没有正确添加两个变量,只是连接
- 如何在客户端验证中验证两个变量规则
- 想要使用document.getelementbyid显示两个变量
- 使用带有两个变量的相同if-else语句
- 我可以用JavaScript声明一个数组中的两个变量吗
- 使用数据库中的两个变量在jqplot中显示图形