Js数组到不同类型的字符串数组

时间:2017-01-01 22:59:36

标签: javascript angularjs arrays json

我试图拥有一个允许从表单发送json的表单。

我的一个输入应该是["1","2","3"]["foo","bar"]形式的数组 我的用户在表单的SINGLE字段中传递数组时遇到了问题。

我希望我的用户能够输入(html)[1,2,3]并将其转换为["1","2","3"][foo,bar],并且必须转换为[" foo&#34 ;,"杆"。]

json.Stringify在这种情况下显然不起作用。

我很难做到这一点我事先并不知道输入字段是数组,字符串还是数字。

我目前正在将我的表单内容存储在我的控制器中的一个对象中,但显然在输入[1,2,3]时,我得到了#1,2; [1,2,3]"当输入["1","2","3"]时,我传递的数据为[\"1\",\"2\",\"3\"]

是否有自动执行此操作的工具/功能?

注意: - 作为阵列的1场NEEDS的输入是我事先不知道阵列的类型以及它将具有的项目数量。 - 我使用角度,但我认为这更像是一个js问题。

3 个答案:

答案 0 :(得分:0)

您可以使用此cast功能:



function cast(s) {
    if (s.match(/^\s*\[.*\]\s*$/)) { // array notation
        return s.trim().replace(/^\[|\]$/g, '').split(',').map(cast);
    }
    // remove wrapping quotes if present
    return s.trim().replace(/^'(.*)'$|^"(.*)"$/g, '$1$2');
}
// I/O for demo
document.querySelector('input').addEventListener('input', function () {
    var s = cast(this.value);
    document.querySelector('span').textContent = JSON.stringify(s);
});

Your input: <input><br>
Output JSON: <span></span>
&#13;
&#13;
&#13;

请注意,用户可以选择键入引号。无论他们是否这样做,结果都是一样的。对于奇异值,它的作用是相同的:如果引号包含在输入中,它们会给出与没有相同的字符串。

答案 1 :(得分:0)

您可以使用map功能:

var arr = [1,2,3];
arr = arr.map(function(el){return el.toString()});
//The output array will be ["1","2","3"]

和[foo,bar]我觉得你不能转换它,因为它是一个变量,你会得到它的价值而不是它的名字。

我希望这可以帮到你。

答案 2 :(得分:0)

不是用户输入[1,2,3],而是通知用户输入1,2,3foo,bar

let arr = [];
for (let input of document.querySelectorAll("form input")) {
  arr.push(input.value.split(","));
}
console.log(
  JSON.stringify(arr[0])
  , JSON.stringify(arr[1])
)
<form>
  <label>input number,number,number:</label>
  <input placeholder="input number,number,number" value="1,2,3"/>
  <br>
  <label>input word,word,word:</label>
  <input placeholder="input word,word,word" value="foo, bar"/>
</form>