我只是创建一个函数来检查我的对象数组中的某个值,但由于某种原因它会一直返回undefined.这是为什么?
演示:http://jsfiddle.net/cNYwz/1/
var data = [{
"Key": "1111-1111-1111",
"Email": "test@test.com"
}, {
"Key": "2222-2222-2222",
"Email": "test@boo.com"
}];
function getByKey(key) {
data.forEach(function (i, val) {
if (data[val].Key === key) {
return data[val].Key;
} else {
return "Couldn't find";
}
});
}
var asd = getByKey('1111-1111-1111');
console.log(asd);
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 16
在你的函数中,你从传递给函数返回forEach,而不是从函数返回getByKey.
你可以像这样调整它:
function getByKey(key) {
var found = null;
data.forEach(function (val) {
if (val.Key === key) {
found = val;
}
});
return found;
}
Run Code Online (Sandbox Code Playgroud)
但是这将迭代所有元素,即使立即找到该项目.这就是为什么你最好使用一个简单的for循环:
function getByKey(key) {
for (var i=0; i<data.length; i++) {
if (data[i].Key === key) {
return data[i];
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我还调整了您的代码以返回值,而不是键.我想那是意图.您可能还与另一个迭代函数混淆:传递给forEach的回调的第一个参数是数组的元素.
| 归档时间: |
|
| 查看次数: |
7549 次 |
| 最近记录: |