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

JavaScript如何判断二维数组中是否存在指定项并设置对应布尔变量

代码问题修复与优化指导

原有代码存在的问题

  • 比较逻辑错误:if判断中误用赋值运算符=代替相等判断运算符,且未正确取数组中的商品名对比:prices数组的每个子项是[商品名称, 价格]的结构,要判断传入的商品名是否存在,应该对比item和prices[i][0],而不是整个prices[i]数组。
  • 赋值逻辑错误:isValidItem != true是比较运算,不会修改isValidItem的值,应该使用赋值运算符=;同时循环内的判断逻辑完全写反,且每次循环都会覆盖isValidItem的取值,即使前面匹配到了正确商品,后续不匹配的项也会把值改回错误结果。
  • 变量声明缺失:循环变量i未加let声明,会隐式成为全局变量,污染全局作用域。
  • 无返回值:函数计算完isValidItem后没有返回,外部调用函数无法拿到判断结果。

修复后的基础可用代码

function addItemToCart(item) {
  let isValidItem = false;
  // 声明循环变量i
  for(let i=0; i<prices.length; i++){
    // 正确对比商品名,匹配到就设为true并终止循环
    if(item === prices[i][0]){
      isValidItem = true;
      break; // 匹配到后无需继续循环
    }
  }
  // 返回判断结果
  return isValidItem;
}

优化建议

  • 用数组内置方法简化代码:可以直接使用Array.some()方法实现匹配判断,无需手动写循环,代码更简洁:
function addItemToCart(item) {
  return prices.some(priceItem => priceItem[0] === item);
}
  • 高频查询场景优化:如果需要频繁判断商品是否存在,可以提前把prices数组转成Map结构,查找时间复杂度从O(n)降到O(1),性能更好:
// 提前初始化商品Map
const priceMap = new Map(prices);

function addItemToCart(item) {
  return priceMap.has(item);
}
// 如果同时需要拿商品价格,直接用priceMap.get(item)即可,不需要再次遍历数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 08:24:03