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)-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') // '不存在'


回答:

js获取一串数字中某个数字的索引?


回答:

方法一,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

回到顶部