You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Javascript中如何根据用户选中的数组元素返回另一数组的对应值

报错原因

  • 你代码里var valueFromSelect = Apple;没有给Apple加引号,JavaScript会把Apple识别为变量而非字符串值,你没有定义过名为Apple的变量,所以会抛出Apple is not defined的引用错误。
  • 你给出的循环代码缺少闭合的},语法不完整也会导致运行报错。

如果你是从页面下拉选择框获取选中值,直接取对应DOM的value属性即可,不需要额外加引号,拿到的本身就是字符串类型。


基础修复方案(沿用你原有的循环逻辑)

// 定义两个基础数组
var fruits = ["Apple", "Orange", "Banana", "Pear", "Pineapple", "Strawberry", "Blueberry"];
var prices = [1.50, 1.20, 1.05, 1.10, 3.00, 0.40, 0.10];

// 选中的水果加引号定义为字符串
var valueFromSelect = "Apple";
var targetPrice = null;

for (var i = 0; i < fruits.length; i++){
  if(valueFromSelect == fruits[i]){
    targetPrice = prices[i];
    break;
  }
}

// 输出结果
if(targetPrice !== null) {
  console.log(`${valueFromSelect}的价格是:${targetPrice}元`);
} else {
  console.log(`未找到${valueFromSelect}对应的价格`);
}

更简洁的实现方案

可以直接用数组的indexOf方法获取匹配元素的下标,不需要手动写循环:

var fruits = ["Apple", "Orange", "Banana", "Pear", "Pineapple", "Strawberry", "Blueberry"];
var prices = [1.50, 1.20, 1.05, 1.10, 3.00, 0.40, 0.10];
var valueFromSelect = "Apple";

var index = fruits.indexOf(valueFromSelect);
if(index > -1) {
  console.log(prices[index]);
} else {
  console.log("无匹配水果");
}

高频查询优化方案

如果需要多次查询水果价格,可以先把两个数组转成键值对对象,后续查询时间复杂度可以降到O(1):

var fruits = ["Apple", "Orange", "Banana", "Pear", "Pineapple", "Strawberry", "Blueberry"];
var prices = [1.50, 1.20, 1.05, 1.10, 3.00, 0.40, 0.10];

// 生成水果价格映射表
var fruitPriceMap = {};
for(var i=0; i<fruits.length; i++) {
  fruitPriceMap[fruits[i]] = prices[i];
}

// 后续查询直接取属性即可
console.log(fruitPriceMap["Apple"]); // 输出1.5
console.log(fruitPriceMap["Blueberry"]); // 输出0.1

内容的提问来源于stack exchange,提问作者Daring Deer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:36:07