如何获取a和b之间的所有数字? (0 - 100)
How to get all number between a and b? (0 - 100)
我有一个这样的对象数组:
let arr = [{start: 0, end: 50, id: '55'}, {start: 51, end: 100, id: '66'}];
我还有一个字符串,例如在这种情况下我们有长度为 100
;
的字符串
所以当我点击字符串中的某个位置时,我可以获得插入符位置:
const range = window.getSelection()?.getRangeAt(0);
const preCaretRange = range?.cloneRange();
preCaretRange?.selectNodeContents(element);
caretCharOffset = preCaretRange?.toString().length || 0;
我的目标 - 当我点击字符串中的某个位置时获取对象的 ID。
这意味着当我点击 33
索引时 - 我会得到 id 55
,当我点击 87
索引时,我会得到 id 66
等。我该怎么做,有人能帮我吗?
如果可以有多个位置匹配的范围,您可以使用例如 reduce 并检查值是否大于或等于起始值,小于或等于结束值。
然后聚合id的值属性。
let arr = [{start: 0, end: 50, id: '55'}, {start: 51, end: 100, id: '66'}];
const getObjectId = pos => {
return arr.reduce((a, c) => {
if (pos >= c.start && pos <= c.end) {
a.push(c.id);
}
return a;
}, []);
}
console.log(getObjectId(33));
console.log(getObjectId(87));
如果只有一个 return 可能的值,您可以使用 for 循环和 return 第一次匹配出现时的值。
let arr = [{start: 0, end: 50, id: '55'}, {start: 51, end: 100, id: '66'}];
const getObjectId = pos => {
for (let i = 0; i <= arr.length; i++) {
let p = arr[i];
if (pos >= p.start && pos <= p.end) {
return p.id;
}
}
}
console.log(getObjectId(33));
console.log(getObjectId(87));
我有一个这样的对象数组:
let arr = [{start: 0, end: 50, id: '55'}, {start: 51, end: 100, id: '66'}];
我还有一个字符串,例如在这种情况下我们有长度为 100
;
所以当我点击字符串中的某个位置时,我可以获得插入符位置:
const range = window.getSelection()?.getRangeAt(0);
const preCaretRange = range?.cloneRange();
preCaretRange?.selectNodeContents(element);
caretCharOffset = preCaretRange?.toString().length || 0;
我的目标 - 当我点击字符串中的某个位置时获取对象的 ID。
这意味着当我点击 33
索引时 - 我会得到 id 55
,当我点击 87
索引时,我会得到 id 66
等。我该怎么做,有人能帮我吗?
如果可以有多个位置匹配的范围,您可以使用例如 reduce 并检查值是否大于或等于起始值,小于或等于结束值。
然后聚合id的值属性。
let arr = [{start: 0, end: 50, id: '55'}, {start: 51, end: 100, id: '66'}];
const getObjectId = pos => {
return arr.reduce((a, c) => {
if (pos >= c.start && pos <= c.end) {
a.push(c.id);
}
return a;
}, []);
}
console.log(getObjectId(33));
console.log(getObjectId(87));
如果只有一个 return 可能的值,您可以使用 for 循环和 return 第一次匹配出现时的值。
let arr = [{start: 0, end: 50, id: '55'}, {start: 51, end: 100, id: '66'}];
const getObjectId = pos => {
for (let i = 0; i <= arr.length; i++) {
let p = arr[i];
if (pos >= p.start && pos <= p.end) {
return p.id;
}
}
}
console.log(getObjectId(33));
console.log(getObjectId(87));