我试图找到包含数组中子字符串的字符串元素的索引。我尝试了Array#indexOf
,但它总是返回-1。
我做错了什么?
var array = ["OTHER-REQUEST-DEPT1", "OTHER-REQUEST-DEPT2", "OTHER-REQUEST-DEPT3"]
var string = "DEPT2"
console.log(array.indexOf(string));

答案 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)));