从右到左获取1所在位置的索引
比如110 从右到左,从0开始,首次出现的位置是1
比如120 首次出现的位置是2
比如001 首次出现的位置是0
比如011 首次出现的位置也是0
从右到左获取1所在位置的索引
比如110 从右到左,从0开始,首次出现的位置是1
比如120 首次出现的位置是2
比如001 首次出现的位置是0
比如011 首次出现的位置也是0
var lastIndexOf = (str, sub) => str.length-str.lastIndexOf(sub)-1
lastIndexOf('110',1) // 1
lastIndexOf('120',1) // 2
lastIndexOf('001',1) // 0
对于边界情况:比如不存在,需要判断下
var getLastIndex = (str, v) => str.includes(v) ? str.split(v).slice(-1)[0].length : -1
getLastIndex('110', '1')
思路---反转该字符串,用indexOf查找这个数字
function getIndex(str,s){
if(str.split('').reverse().join("").indexOf(s)>-1){
return str.split('').reverse().join("").indexOf(s)
}else{
return "不存在"
}
}
getIndex("1234567",'3') //4
getIndex("1234567",'0') // '不存在'
方法一,lastIndexOf,再来做索引运算
"110,120,001,011".split(",")
.map(s => s.length - s.lastIndexOf("1") - 1)
.forEach(n => console.log(n));
方法二,转成数组,reverse 反向,再用 indexOf 来找
"110,120,001,011".split(",")
.map(s => [...s].reverse().indexOf("1"))
.forEach(n => console.log(n));
方法三,自己写个函数来找
function indexOfRight(s, n) {
for (let i = s.length - 1, j = 0; i >= 0; i--, j++) {
if (s[i] === n) { return j; }
}
return -1;
}
"110,120,001,011".split(",").map(s => indexOfRight(s, "1")).forEach(n => console.log(n));
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.8k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
3 回答10.3k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.8k 阅读
js中有个
lastIndexOf()
的字符串方法,可以倒着查找字符,并返回这个索引值(若不存在则返回-1)。但这个索引值也是从左边开始计算的。如果您这儿需要从右往左开始算索引值,需要用字符串的长度,计算出来。