我具有一个函数,参数具有多个值,在循环后我通过它们传递。我想使用im开始替换较旧的字符串中的整数。这是我下面的代码
onGetValues: function(response) {
var message = response;
var myValues = [];
//Then Im looping it here to get all the value passed from the response ie "my name", "surname", "age"
for (var i = 0; i < message.length; i++) {
myValues += message[i];
}
//global object with a string value like 12==12AND03==Im thirty
var test == originalGlobalString
//how can loop in the string above to replace the integers in the string with the values from from the respnse parameter values and display like my name == surname AND age == im thirty?
},
您提出的内容对我没有意义,但这是您要的内容的一部分:
工作示例:https://jsfiddle.net/twisty/bo6s1e9r/
javascript
$(function() {
var myData = [
"My Name", "Surname", "Age", "I'm thirty"
];
function pad(i) {
if (i.toString().length < 2) {
return "0" + i;
} else {
return i;
}
}
function getValues(t) {
var myValues = [];
var myString = "";
$.ajax({
url: "/echo/json/",
type: "post",
data: {
json: JSON.stringify(myData)
},
success: function(response) {
console.log(response);
$.each(response, function(i, v) {
myValues.push(v);
myString += pad(i) + "==" + v + "AND";
});
//Remove last "AND"
myString = myString.slice(0, -3);
console.log("Array: ", myValues);
console.log("String: ", myString);
if (t == "array") {
$("#results").html(myValues.join(", "));
} else {
$("#results").html(myString);
}
}
});
}
$("#btn-1").click(function(e) {
console.log("Click Event fired.");
getValues();
});
});
现在,如果您想获得一个说:
的字符串My Name==SurnameANDAge==I'm thirty
您可以越过自己的步骤之一,然后做类似的事情:
function getValues(t) {
var myString = "";
$.ajax({
url: "/echo/json/",
type: "post",
data: {
json: JSON.stringify(myData)
},
success: function(response) {
console.log(response);
for (var i = 0; i < response.length; i += 2) {
myString += response[i] + "==" + response[i + 1] + "AND";
}
console.log(myString);
$("#results").html(myString.slice(0, -3));
}
});
}
由于您并没有真正澄清自己在做什么,因此很难进一步帮助。
update
这花了一点刮擦,但后来我意识到您要做什么。基本上,我们要模板,因此在字符串中查找整数,并基于数组中的该索引,用相应的字符串替换。
例如,如果您有此字符串:
"0==1AND2==I'm thirty"
您有此数组:
["My Name", "Surname", "Age"]
结果将是一个新字符串:
"My Name==SurnameANDAge==I'm thirty"
工作示例:https://jsfiddle.net/twisty/bo6s1e9r/5/
function getValues(response) {
var partsA = testString.split("AND");
console.log("A:", partsA);
var partsB = [];
var newString = "";
$.each(partsA, function(k, v) {
partsB = v.split("==");
console.log("B-1:", partsB);
if (!isNaN(partsB[0])) {
partsB[0] = myData[parseInt(partsB[0])];
}
if (!isNaN(partsB[1])) {
partsB[1] = myData[parseInt(partsB[1])];
}
console.log("B-2:", partsB);
partsA[k] = partsB.join("==");
});
newString = partsA.join("AND");
console.log("S:", newString);
return newString;
}
这将字符串分成基于"one_answers"。然后,我们基于" =="将它们分解成块。我们使用isNaN()
(不是数字函数(检查每个部分,如果找到一个数字,我们将数字用数据数组中的字符串值代替。
对于测试数据,我们的控制台将显示:
A: Array [ "0==1", "2==Im thirty" ]
B-1: Array [ "0", "1" ]
B-2: Array [ "My Name", "Surname" ]
B-1: Array [ "2", "Im thirty" ]
B-2: Array [ "Age", "Im thirty" ]
S: My Name==SurnameANDAge==I'm thirty
函数然后返回字符串。可以改进这是逃避可能引起问题的"
或'
之类的东西。另外,如果您的字符串如下:
"0 is Mary==1AND2==I'm Thirty"
这将失败,并且将无法检测到0
,因为isNaN()
将在此性质的字符串上返回true
。您的结果是:
"0 is Mary==SurnameANDAge==I'm Thirty"
希望会有所帮助。