查找字符串中存在哪个数组元素

tee*_*tee -1 javascript arrays string ecmascript-6

有什么方法或快速方法可以查看字符串中数组中的哪些元素?

const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring';
Run Code Online (Sandbox Code Playgroud)

在这个例子中,bar从阵列中存在myString,所以我需要bar给予myArraymyString

Jac*_*ord 11

使用findincludes

const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring';

const res = myArray.find(e => myString.includes(e));

console.log(res);
Run Code Online (Sandbox Code Playgroud)

如果你想找到包含在字符串中的所有项目,换出findfilter

const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring-baz';

const res = myArray.filter(e => myString.includes(e));

console.log(res);
Run Code Online (Sandbox Code Playgroud)

如果需要索引,请使用findIndex

const myArray = ['foo', 'bar', 'baz'];
const myString = 'somelongbarstring';

const res = myArray.findIndex(e => myString.includes(e));

console.log(res);
Run Code Online (Sandbox Code Playgroud)

多个索引有点棘手-您必须使用该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);
Run Code Online (Sandbox Code Playgroud)

(你也可以换出ei上述功能,但它更容易理解通过按键来做到这一点,因为我们是迭代。)

  • 或全部使用.filter (4认同)