Fucntion参数值以从字符串中替换整数



我具有一个函数,参数具有多个值,在循环后我通过它们传递。我想使用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"

希望会有所帮助。

最新更新