我正在尝试在HTML文本输入中接受JavaScript数组文字。
问题在于HTML文本输入被捕获为字符串,因此['name', 'who', 1]
的输入变为"['name', 'who', 1]"
。
我的意图是让以下示例产生相应的输出。
"['river',"spring"]" // ["river","spring"]
"[{key:'value'},20,'who']" // [{"key":"value"},20,"who"]
解决此问题的方法是在下面的代码片段中使用 eval :
const form = document.querySelector('.form');
const inputField = document.querySelector('.input');
const btnParse= document.querySelector('.btn');
const out = document.querySelector('.out');
form.addEventListener('submit', (e)=> {
e.preventDefault();
try {
parsed = eval(inputField.value);
if(Array.isArray(parsed)) {
out.textContent = JSON.stringify(parsed);
} else throw new Error('input is not a valid array' );
} catch(err) {
out.textContent = `Invalid input: ${err.message}`;
}
});
<form class="form">
<fieldset>
<legend>Enter array to parse</legend>
<input class="input" type="text">
<input class="btn" type="submit" value="parse">
</fieldset>
</form>
<div>
<p class="out">
</p>
</div>
有什么其他方法可以将JavaScript数组文字HTML文本输入转换为JS数组对象而无需使用 eval ?
答案 0 :(得分:-1)
JSON.parse("[1,2,3,4,5,6,5,6,7,78]")
答案 1 :(得分:-2)
JSON.parse("[\"name\", \"who\", 1]")
将为您服务。
了解JSON。解析here