JavaScript函数未按预期返回数组
我有一个json数组和一个简单的函数来返回一些数据。我可以将我想要的数据记录到控制台(该函数目前执行此操作以进行测试),但它不会返回 斯塔克尔斯,请帮我恢复一下疲惫的大脑,告诉我哪里出了差错 (代码非常简单,函数调用位于.js的底部) 在这种情况下可能更好: 试试这个:JavaScript函数未按预期返回数组,javascript,jquery,Javascript,Jquery,我有一个json数组和一个简单的函数来返回一些数据。我可以将我想要的数据记录到控制台(该函数目前执行此操作以进行测试),但它不会返回 斯塔克尔斯,请帮我恢复一下疲惫的大脑,告诉我哪里出了差错 (代码非常简单,函数调用位于.js的底部) 在这种情况下可能更好: 试试这个: 它不起作用的原因是您返回到每个函数。因此,设置一个在迭代之外赋值的变量将获得所需的数据。您的返回值位于每个使用的匿名函数中。因此getCountryData本身没有返回(因此默认为返回未定义)。它应该是这样的: functi
它不起作用的原因是您返回到
每个
函数。因此,设置一个在迭代之外赋值的变量将获得所需的数据。您的返回值位于每个使用的匿名函数中。因此getCountryData
本身没有返回(因此默认为返回未定义)。它应该是这样的:
function getCountryData(data, country)
{
var result;
$.each(data, function(index) {
if( data[index]["Country"] == country )
{
console.log( data[index]["Country"] );
console.log( data[index]["data"] );
result = data[index]["data"];
}
});
return result;
}
您需要在每个
之外返回,并使用返回
提前退出每个
迭代:
function getCountryData(data, country)
{
var res;
$.each(data, function(index) {
if( data[index]["Country"] == country )
{
res = data[index]["data"];
// once found, stop searching and
// break early out of the each iteration
return;
}
});
return res;
}
你真的应该使用每一种吗?如果您试图将结果过滤为单个答案,请尝试
function getCountryData(data, country) {
var matchingCountries = $.grep(data, function(row){
return row.Country == country;
});
if (matchingCountries.length > 0)
return matchingCountries[0].data;
}
@Greg-J不用担心。我确实有过这样的时刻,答案就在我面前。有趣的是,在此之前我在jQuery中从未见过这个函数。回答得好。
function getCountryData(data, country)
{
var result;
$.each(data, function(index) {
if( data[index]["Country"] == country )
{
console.log( data[index]["Country"] );
console.log( data[index]["data"] );
result = data[index]["data"];
}
});
return result;
}
function getCountryData(data, country)
{
var res;
$.each(data, function(index) {
if( data[index]["Country"] == country )
{
res = data[index]["data"];
// once found, stop searching and
// break early out of the each iteration
return;
}
});
return res;
}
function getCountryData(data, country) {
var matchingCountries = $.grep(data, function(row){
return row.Country == country;
});
if (matchingCountries.length > 0)
return matchingCountries[0].data;
}