查找字符串中存在哪个数组元素[重复]
Posted
技术标签:
【中文标题】查找字符串中存在哪个数组元素[重复]【英文标题】:Find which array element exists in a string [duplicate] 【发布时间】:2019-11-21 05:15:21 【问题描述】:有没有什么方法或快速的方法可以查看数组中的哪些元素存在于字符串中?
const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring';
在本例中,数组中的bar
存在于myString
中,因此我需要在给定myArray
和myString
的情况下获取bar
。
【问题讨论】:
你尝试了什么? 【参考方案1】:将find
与includes
一起使用:
const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring';
const res = myArray.find(e => myString.includes(e));
console.log(res);
如果要查找字符串中包含的所有项目,请将find
替换为filter
:
const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring-baz';
const res = myArray.filter(e => myString.includes(e));
console.log(res);
如果你想要索引,使用findIndex
:
const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring';
const res = myArray.findIndex(e => myString.includes(e));
console.log(res);
多个索引有点棘手 - 您必须使用 Array.prototype.keys
方法来保留原始索引,因为 filter
返回带有新索引的新数组:
const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring-baz';
const res = [...myArray.keys()].filter((e, i, a) => myString.includes(myArray[e]));
console.log(res);
(您也可以在上述函数中将e
替换为i
,但这样做更容易理解,因为我们正在遍历键。)
【讨论】:
或.filter
为所有
编辑(很多)@JonasWilms。
@JackBashford 你的最后一个例子不起作用?
已修复 @Kobe - 也感谢您的索引!
不用担心,索引听起来更好,但英语很奇怪:P以上是关于查找字符串中存在哪个数组元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章