我很惭愧地问这么基本的事情,但我现在已经尝试了很长时间了,我无法弄清楚:(
我有两个数组。一个包含键和其他值。
我已将它们组合在一起,因此我可以拥有一个带有键值对的数组:
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
我做错了什么?
谢谢!
答案 0 :(得分:1)
$.grep
将返回一个数组,该数组由对象(包含key
和value
个字段)组成。所以为了获得价值,你可以使用:
var result = $.grep(combinedArray, function(e){ return e.key == 'LND'; });
alert(result[0].value);
答案 1 :(得分:0)
来自文档
$ .grep()方法根据需要从数组中删除项目 所有剩余的项目都通过了提供的测试
意味着结果是一个包含与您的过滤器匹配的对象的数组(在这种情况下是键)
因此,您可以像往常一样从数组result[0].value
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;
答案 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);