Implement our custom split function myCustomSplit which behaves the same way as split() in javascript.
const str = "val1&$val2&$val3";
const op = str.myCustomSplit('&$');
console.log(op);
// output
// ["val1", "val2", "val3"]
String.prototype.myCustomSplit = function(splitVal) {
const outputArr = [];
const string = this;
let nextVal = '';
const splitlength = splitVal.length;
let i = 0;
// ...Some code
}myCustomSplit - Name of the custom Split function.splitVal - Value based on which we have to do the split.string - The string on which we execute split.outputArr - The array that will be returned as output.nextVal - Gives the intermediate string that is formed.splitlength - Length of the splitValwhile(i < string.length) {
// When the current character is same as splitVal's first character
if (string[i] === splitVal[0]) {
let split_length_remaining = splitlength - 1;
let split_length_passed = 1;
let similarSplit = string[i];
while(split_length_remaining) {
if (string[i + split_length_passed] === splitVal[split_length_passed]) {
similarSplit += string[i + split_length_passed];
split_length_passed++;
split_length_remaining--;
} else {
break;
}
}
if (!split_length_remaining) {
outputArr.push(nextVal);
nextVal = '';
} else {
nextVal += similarSplit;
}
i = i + split_length_passed;
} else { // When the current character is different from `splitVal` 's first character
nextVal += string[i];
i++;
}
}splitval's first character, if they are different concatenate with nextVal and increment i by 1.splitval's first character, then we go into inner while loop which helps when the split value is more than single character.if case:split_length_remaining gives the remaining length of the splitVal that we have to iterate for.split_length_passed is set to 1 because we already compared the first character of the splitVal.similarSplit helps in adding all the values after the first value is matched in inner while loop, so that if the last character of splitVal fails then we can add the content of similarSplit to the nextVal variable.split_length_remaining is not 0, we did not completely compare all the values. So, we go on for other values to check if they match the input string.If they are equal we increment i value and decrement split_length_remaining.split_length_remaining has reached 0 then we would have already matched all the values in splitVal with the string, so push the content into nextVal and reset it to empty string. outputArr.push(nextVal);
return outputArr;Finally, push all the contents in nextVal to outputArr and return it.
const x = "val1&$val2&$val3".myCustomSplit('&$');
console.log(x);
// output: ["val1", "val2", "val3"]Checkout the code at codepen

