我有看起来像这样的 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/