javascript - 检查数组中是否存在字符串值并返回找到的数组值 js

标签 javascript reactjs

我有看起来像这样的 key 标识符...

const category = key; // could be "bus","car","plane"

对于此示例,让我们使用 “bus”。我还有一个字符串数组,看起来像这样......

let transportationFields = [
      'bus_station', 'bus_stop', 'bus_line', 'took_bus'
      'car', 'buyer_of_car', 'car_model',
      'train_number', 'train_trip_num', 'train_stop',
    ];

现在我正在获取

的索引
const transFieldValues = transportationFields.indexOf(category) > -1; 

但这只会返回 true。我怎样才能捕获它匹配的领域?例如。由于 category = bus。我怎样才能返回它所赋予的所有值(value)? ('bus_station', 'bus_stop', 'bus_line', 'took_bus') ?

提前感谢您的帮助!

最佳答案

您可以使用 .filter()用于查找所有匹配项并将它们返回到数组中:

let transportationFields = [
  'bus_station', 'bus_stop', 'bus_line', 'took_bus',
  'car', 'buyer_of_car', 'car_model',
  'train_number', 'train_trip_num', 'train_stop',
];

let category = 'bus';

let transFieldValues = transportationFields.filter(function (item) {
  return item.indexOf(category) > -1;
});

document.write (JSON.stringify(transFieldValues));

或者用 ES6 的箭头函数:

let transportationFields = [
  'bus_station', 'bus_stop', 'bus_line', 'took_bus',
  'car', 'buyer_of_car', 'car_model',
  'train_number', 'train_trip_num', 'train_stop',
];

let category = 'bus';

let transFieldValues = transportationFields.filter(w => w.indexOf(category) > -1);

document.write (JSON.stringify(transFieldValues));

如果您不介意让 Edge 用户倒霉,那么您可以使用 .includes() :

let transFieldValues = transportationFields.filter(w => w.includes(category));

... 这看起来比你必须与 .indexOf() 一起使用的 > -1 更好。

关于javascript - 检查数组中是否存在字符串值并返回找到的数组值 js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37197831/

相关文章:

javascript - react 搜索 onChange 取消请求

css - 使用 Webpack 和 font-face 加载字体

javascript - 如何复制我的网页中显示的代码并嵌入其中的按钮

javascript - knockout 绑定(bind)无法按预期操作可观察数组

javascript - 防止 react 路由器检测位置变化

javascript - 我没有在React项目中定义for循环

reactjs - 在nextjs中获取URL路径名

javascript - 数据全部为0时是否可以显示饼图

php - 通过 Ajax 发送到 PHP 的 Fabric.js canvas.toDataURL()

javascript - 单击按钮时在两个功能之间切换。