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

Check if string value is present within array and return found array value(s) js

本文关键字:数组 返回 js 是否 存在 字符串 检查      更新时间:2023-09-26

我有这样的密钥标识符。。。

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

对于本例,我们使用CCD_ 1。我还有一个字符串数组,看起来像这样。。。

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。我怎样才能抓住它匹配的场地?例如由于CCD_ 3。我如何才能返回它所赋予的所有值?('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));

它看起来比你必须与CCD_ 8一起使用的CCD_。

您可以使用Array#filter

let transportationFields = [
  'bus_station', 'bus_stop', 'bus_line', 'took_bus',
  'car', 'buyer_of_car', 'car_model',
  'train_number', 'train_trip_num', 'train_stop',
];
transportationFields = transportationFields.filter(e => {
  return e.indexOf('bus') != -1;
});
console.log(transportationFields)

您还可以创建一个函数并传递值来搜索

let transportationFields = ['bus_station', 'bus_stop', 'bus_line', 'took_bus','car', 'buyer_of_car', 'car_model','train_number', 'train_trip_num', 'train_stop'];
var findField = function(input) {
  return transportationFields.filter(e => {return e.indexOf(input) != -1;});
}
console.log(findField('bus'));