js获取一串数字中某个数字的索引?
从右到左获取1所在位置的索引
比如110 从右到左,从0开始,首次出现的位置是1 比如120 首次出现的位置是2
比如001 首次出现的位置是0
比如011 首次出现的位置也是0
回答:
js中有个lastIndexOf()
的字符串方法,可以倒着查找字符,并返回这个索引值(若不存在则返回-1)。但这个索引值也是从左边开始计算的。
如果您这儿需要从右往左开始算索引值,需要用字符串的长度,计算出来。
/** * 获取字符1从右往左开始计算的索引
* @param {string} str
*/
const getOneIndexFromLast = (str) => {
const index = str.lastIndexOf("1");
if (index === -1) {
return index;
}
return str.length - index - 1;
};
回答:
var lastIndexOf = (str, sub) => str.length-str.lastIndexOf(sub)-1lastIndexOf('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 : -1getLastIndex('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));
以上是 js获取一串数字中某个数字的索引? 的全部内容, 来源链接: utcz.com/p/933466.html