gpt4 book ai didi

javascript - 通过 jQuery .each 在嵌入式数组上使用 find()

转载 作者:行者123 更新时间:2023-12-01 03:42:00 28 4
gpt4 key购买 nike

我正在尝试循环遍历嵌入数组,直到找到一个 data 属性与我的输入相对应的项目。

下面的示例应该引起荷兰的注意。相反,当您使用第一个数组中的某个项目时,您会得到未定义,如果您从第二个数组中选择一个项目,您会得到一个对象。

var countries = {
"EU": [
{value: 'Malta', data: 'MT'},
{value: 'Netherlands', data: 'NL'},
{value: 'Austria', data: 'AT'},
{value: 'Italy', data: 'IT'}
],
"other": [
{value: 'Bosnia and Herz.', data: 'BA'},
{value: 'Jersey', data: 'JE'},
{value: 'Belarus', data: 'BY'}
]
};


function findCountry(code) {
$.each(countries, function(key, arr) {
val = arr.find(function(obj) {
return obj.data == code;
});
});
return val;
}

alert(findCountry('NL'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

所以我认为即使在第一个数组中找到该项目,each 也会继续运行。可能需要一个 return 语句来代替。但即便如此,

var countries = {
"EU": [
{value: 'Malta', data: 'MT'},
{value: 'Netherlands', data: 'NL'},
{value: 'Austria', data: 'AT'},
{value: 'Italy', data: 'IT'}
],
"other": [
{value: 'Bosnia and Herz.', data: 'BA'},
{value: 'Jersey', data: 'JE'},
{value: 'Belarus', data: 'BY'}
]
};


function findCountry(code) {
$.each(countries, function(key, arr) {
return arr.find(function(obj) {
return obj.data == code;
});
});
}

alert(findCountry('BA'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

但这始终返回undefined。那么我错过了什么?

最佳答案

您需要在 findCountry() 函数中返回 $.each() 的结果。在您的示例中,它没有 return,因此是 undefined。我也删除了 var val 因为您没有为其分配任何内容。

function findCountry(code) {
return $.each(countries, function(key, arr) {
return arr.find(function(obj) {
return obj.data == code;
});
});
}

要返回匹配国家/地区的名称,您可以使用纯 Javascript(不需要 jQuery),并通过使用 Object.keys() 来提高效率。循环遍历对象和 Array.prototype.some() 的方法当您找到匹配项时提前退出的方法。

var countries = {
"EU": [
{value: 'Malta', data: 'MT'},
{value: 'Netherlands', data: 'NL'},
{value: 'Austria', data: 'AT'},
{value: 'Italy', data: 'IT'}
],
"other": [
{value: 'Bosnia and Herz.', data: 'BA'},
{value: 'Jersey', data: 'JE'},
{value: 'Belarus', data: 'BY'}
]
};

function findCountry(code) {
var name = null;
Object.keys(countries).some(function(key) { // Go through EU, other, ...
return countries[key].some(function(country) { // Check the array under each key
if (country.data === code) { // check the code against the data value
name = country.value; // set the name to the value
}
return name !== null; // a true result will exit some()
});
}); // this some() will also exit when we get a result
return name; // return the name value we found
}

console.log(findCountry('BA'));

这将输出 Bosnia and Herz. 如此处所示 https://jsfiddle.net/yybgn2jg/1/

关于javascript - 通过 jQuery .each 在嵌入式数组上使用 find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43809216/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com