Javascript / jquery:从组合键值数组中获取值

时间:2014-09-17 10:13:54

标签: javascript jquery arrays object key

我很惭愧地问这么基本的事情,但我现在已经尝试了很长时间了,我无法弄清楚:(

我有两个数组。一个包含键和其他值。

我已将它们组合在一起,因此我可以拥有一个带有键值对的数组:

var combinedArray = [];
var keysArray = [];
var valuesArray = [];
keysArray = ["LND", "NY", "MAD"];
valuesArray = ["London", "New York", "Madrid"];
var keysArrayLength = keysArray.length;

for (var i = 0; i < keysArrayLength; i++) 
{  
 combinedArray.push({
 key: keysArray[i],
 value: valuesArray[i]
 });  
}

现在我需要获取某个键的值。

例如,我想在变量中包含键&#34; LND&#34;

的值

所以我这样做:

var result = $.grep(combinedArray, function(e){ return e.key == 'LND'; });

但结果是,我得到一个[Object,Object]而不是London

我做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

$.grep将返回一个数组,该数组由对象(包含keyvalue个字段)组成。所以为了获得价值,你可以使用:

var result = $.grep(combinedArray, function(e){ return e.key == 'LND'; });
alert(result[0].value);

Fiddle

答案 1 :(得分:0)

来自文档

  

$ .grep()方法根据需要从数组中删除项目   所有剩余的项目都通过了提供的测试

意味着结果是一个包含与您的过滤器匹配的对象的数组(在这种情况下是键)

因此,您可以像往常一样从数组result[0].value

获取它

&#13;
&#13;
var combinedArray = [];
var keysArray = [];
var valuesArray = [];
keysArray = ["LND", "NY", "MAD"];
valuesArray = ["London", "New York", "Madrid"];
var keysArrayLength = keysArray.length;

for (var i = 0; i < keysArrayLength; i++){  
   combinedArray.push({
      key: keysArray[i],
      value: valuesArray[i]
   });  
}

var result = $.grep(combinedArray, function(e){ return e.key === 'LND'; });

document.write(result[0].value);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

.grep创建数组,你必须使用这种代码

var combinedArray = [];
var keysArray = [];
var valuesArray = [];
keysArray = ["LND", "NY", "MAD"];
valuesArray = ["London", "New York", "Madrid"];
var keysArrayLength = keysArray.length;

for (var i = 0; i < keysArrayLength; i++) 
{  
 combinedArray.push({
 key: keysArray[i],
 value: valuesArray[i]
 });  
}

var result = $.grep(combinedArray, function(e){ return e.key == 'LND'; });

console.log(combinedArray);
alert(result[0].value);

示例http://jsfiddle.net/6hza5m5e/1/