我有一个包含4个对象的数组,用于填充下拉菜单。每次我更改菜单时,都应该使用下拉菜单的值并使用lat和long映射位置。
我使用find方法搜索数组,但它只返回数组中第一个对象的值,无论选择什么。有什么帮助吗?
var MagicKingdom = {description: "Magic Kingdom Park", latitude: 28.417713,
longitude: -81.581206}
var Epcot = {description: "Epcot", latitude: 28.374786, longitude:
-81.549396}
var AnimalKingdom = {description: "Disney's Animal Kingdom Theme Park",
latitude: 28.359792, longitude: -81.591316}
var HollywoodStudios = {description: "Disney's Hollywood Studios'",
latitude: 28.357568, longitude: -81.558275}
var populate = document.getElementById("locationSelect");
var locations = [MagicKingdom, Epcot, AnimalKingdom, HollywoodStudios];
var locationSelection = function(){
var selected = document.getElementById("locationSelect");
console.log(selected.value);
var svalue = function(){
return selected.value;
}
console.log(svalue());
var locationSelected = locations.find(svalue);
console.log(locationSelected.description);
}
以下是返回值:
p2.js:42 Magic Kingdom Park
p2.js:47 Magic Kingdom Park
p2.js:50 Magic Kingdom Park
p2.js:42 Epcot
p2.js:47 Epcot
p2.js:50 Magic Kingdom Park
因此selectedValue和svalue正确更新,但不是locationSelected。
答案 0 :(得分:0)
find方法接受一个参数,该参数表示正在搜索的数组的元素,如果元素与相关条件匹配(在您的情况下,则为element.description == selected.value),则返回true。它的工作方式是find
为每个数组元素调用提供的函数,传入并获取结果。只要结果为真(或" truthy"),它就会返回元素。所以试试这个:
var svalue = function(el){
return el.description === selected.value;
}