查找包含数组中子字符串的字符串的索引

时间:2017-12-21 21:20:42

标签: javascript

我试图找到包含数组中子字符串的字符串元素的索引。我尝试了Array#indexOf,但它总是返回-1。

我做错了什么?



var array = ["OTHER-REQUEST-DEPT1", "OTHER-REQUEST-DEPT2", "OTHER-REQUEST-DEPT3"]
var string = "DEPT2"
console.log(array.indexOf(string));




2 个答案:

答案 0 :(得分:4)

SELECT . . . FROM ptsweb.tblCustomerInqry i LEFT OUTER JOIN ptsweb.tblCustomer tc ON tc.CustomerID = i.CustomerID OUTER APPLY (SELECT TOP (1) p.* FROM ptsweb.tblProposal p WHERE tc.CustomerID = p.CustomerID ORDER BY p.DateCreated DESC ) p WHERE i.CustInqDate > '2017-01-01' AND tc.CustomerID = 101568; 找到等于其参数的数组项的索引。

您没有等于 Array.indexOf()的任何数组元素。

听起来你想要检查数组是否包含(或找到索引)包含字符串的任何元素,使用带有箭头的"DEPT2".some()调用.findIndex()

的函数

答案 1 :(得分:2)

扩展SLaks的答案,下面是一些功能实例,根据包含数组子字符串的字符串的位置实现不同的结果。



const array = ["OTHER-REQUEST-DEPT1","OTHER-REQUEST-DEPT2","OTHER-REQUEST-DEPT3"];
const string = "DEPT2";

console.log(array.find     (e => e.includes(string)));
console.log(array.findIndex(e => e.includes(string)));
console.log(array.some     (e => e.includes(string)));
console.log(array.reduce   ((m, e, i) => e.includes(string) ? Object.assign(m, { [i]: e }) : m, {}));
console.log(array.filter   (e => e.includes(string)));