@zvizvi אמר בasync ב - forEach:
@מנצפך אמר בasync ב - forEach:
אבל אני מבין שזה קצת טריקי. לא?
זה טריקי.
אבל הטריק מתבצע פעם אחת ואז השימוש רגיל
בשונה מהקוד של דוד שארוך ומורכב יותר בכל פעם.
@zvizvi אמר בasync ב - forEach:
@מנצפך אמר בasync ב - forEach:
אבל אני מבין שזה קצת טריקי. לא?
זה טריקי.
אבל הטריק מתבצע פעם אחת ואז השימוש רגיל
בשונה מהקוד של דוד שארוך ומורכב יותר בכל פעם.
האם אני מבין נכון שהוא יריץ מהר יותר JS וגם ידע לקמפל JS לקבצים בינארים?
זה זה
function getClosetMatch(theString, matchSerch, goal) {
let prevPos = [-1, 0];
let reg = new RegExp(matchSerch, 'g');
let lastResult = null;
while((lastResult = reg.exec(theString)) != null){
let currPosAfterFind = reg.lastIndex;
let currPosBeforeFind = lastResult.index;
if(currPosAfterFind < goal || prevPos[0]==-1) {
prevPos = [currPosBeforeFind, currPosAfterFind];
} else {
if((prevPos[1] - goal) < (goal - currPosAfterFind)) {
prevPos = [currPosBeforeFind, currPosAfterFind];
}
break;
}
}
return prevPos;
}
לא טוב
var str = 'aa\r\n\bb\r\n'
var reg = new RegExp('\r\n|\n\r|\r|\n', 'g');
var res = reg.exec(str)
res.length
//reg.lastIndex
//str.length
זה מחזיר 1, בזמן שהוא אמור למצוא 2 תווי סוף קטע.
למה זה לא עובד?
http://jsfiddle.net/pPW8Y/388/
עם הרפלייס הכל היה טוב
משהו בפונקציה exec מתנהג שונה.
@dovid
בחישוב שלי יש בעיה נוספת
אם הערך ההתחלתי (-1) קרוב יותר מהמקום הראשון שמוצא, הוא בוחר ב- 1-.
@אהרן אמר באיך גורמים לng-model להתעדכן כשמעתיקים לשדה ע"י קוד?:
א"א להחיל בו שינוים.
אפשר
כך
scope.$parent.$eval(attr.ngModel + '="' + newVal+'"')
@אהרן אמר באיך גורמים לng-model להתעדכן כשמעתיקים לשדה ע"י קוד?:
@אהרן אמר באיך גורמים לng-model להתעדכן כשמעתיקים לשדה ע"י קוד?:
השאלה איך אני הופך א"ז לנתיב למשתנה.
כך:
scope.$parent.$eval(attr.ngModel)תודה על ההקשבה
לא טוב
הוא מחזיר את התוכן
א"א להחיל בו שינוים.
@אהרן אמר באיך גורמים לng-model להתעדכן כשמעתיקים לשדה ע"י קוד?:
השאלה איך אני הופך א"ז לנתיב למשתנה.
כך:
scope.$parent.$eval(attr.ngModel)
תודה על ההקשבה 
למעשה
.ctrl.addOpt.text
נמצא כבר בתוך attr.ngModel אבל כסטרינג.
השאלה איך אני הופך א"ז לנתיב למשתנה.
מה הייתי עושה בלי מחנך דגול כמוך.
<input type="text" replaceChars>
.directive('replaceChars', function () {
return function (scope, element, attr) {
element.bind("keydown", function (event) {
let keyCode = event.which;
let val = element.val();
let pos = event.srcElement.selectionStart;
if(keyCode==83) {
let addLeter = 'q'
scope.$parent.ctrl.addOpt.text =
val.substring(0, pos) + addLeter + val.substring(pos);
event.srcElement.setSelectionRange(pos, pos);
event.preventDefault();
scope.$apply();
}
})
})
@dovid אמר באיך גורמים לng-model להתעדכן כשמעתיקים לשדה ע"י קוד?:
$scope.$apply();(קמצן כקמצנותו
).
את זה עשיתי, לא עזר.
בסוף אני מעדכן ישר את המודול
רק שהייתי צריך לחפור איזה מנהרה בשביל להגיע אליו
מדובר בדיירקטיב שבחלק מהקלידים הוא מחליף לתווים אחרים
ורציתי שזה יהיה גנרי ולא להעביר בכל פעם את משתנה המודל.
scope.$parent.ctrl.addOpt.text
אתה מכיר דרך מודורלית טובה יותר?
בסוף עשיתי אחרת, זה נכון יותר כיון שזה 2 צורות הסתכלות על אותו חיפוש.
function getClosetMatch(theString, matchSerch, goal) {
let prevPos = [-1, 0];
theString.replace(new RegExp(matchSerch, 'g'), function(match, currPos){
prevPos[0] = Math.abs(currPos - goal) < Math.abs(prevPos[0] - goal) ? currPos : prevPos[0];
prevPos[1] = prevPos[0] + match.length;
return match;
});
return prevPos;
}
יש איזה פונקציה שאומר לו להתרענן?
אני צריך את שניהם
function getClosetMatch(theString, matchSerch, goal) {
let prevPos = [-1, 0];
theString.replace(new RegExp(matchSerch, 'g'), function(match, currPos){
prevPos[0] = Math.abs(currPos - goal) < Math.abs(prevPos - goal) ? currPos : prevPos;
currPos += match.length;
prevPos[1] = Math.abs(currPos - goal) < Math.abs(prevPos - goal) ? currPos : prevPos;
return match;
});
return prevPos;
}
function getClosetMatch(theString, matchSerch, goal) {
let prevPos = -1;
theString.replace(new RegExp(matchSerch, 'g'), function(match, currPos){
***currPos += match.length;***
prevPos = Math.abs(currPos - goal) < Math.abs(prevPos - goal) ? currPos : prevPos;
return match;
});
return prevPos;
}
עדיף כך
זה מחזיר את המיקום אחרי הנמצא
טוב למקרים ויש כמה אפשרויות בחיפוש.
function getClosetMatch(theString, matchSerch, goal) {
let prevPos = -1;
theString.replace(new RegExp(matchSerch, 'g'), function(match, currPos){
prevPos = Math.abs(currPos - goal) < Math.abs(prevPos - goal) ? currPos : prevPos;
return match;
});
return prevPos;
}
מסתבך עם זה כבר הרבה זמן
חיפוש מעבר קטע במיקום 1000 בערך
לפני או אחרי, הכי קרוב
ואם אין בכלל בסטרינג עד מקבל סוף הסטרינג.
יש לכם רעיון לקוד פשוט בלי מליון התניות?