如何将转换后的字符串转换回数组?
How to convert a converted string back into an array?
据我所知,只能将字符串保存到本地存储。所以,我不得不写一个函数来保存数组。如果我调用 console.log(fixA(["string1", [5, [false]], "string2"]));
,我会得到 "'string1',[5,[false]],'string2'"
的输出。这是:
function fixA(array) {
var toreturn = "";
for (var i = 0; i < array.length; i++) {
if (typeof array[i] === 'object') {
toreturn += "[" + fixA(array[i]) + "]";
} else {
if (typeof array[i] === 'string') {
toreturn += "'" + array[i] + "'";
} else {
toreturn += array[i];
}
}
if (i < array.length - 1) {
toreturn += ",";
}
}
return toreturn;
}
console.log(fixA(["string1", [5, [false]], "string2"]));
现在的问题是我不知道如何将它转换回来。我已经尝试了一些东西,但总是对如何将数组转换回来感到困惑。这基本上是我尝试过的:
function fixS(string) {
var toreturn = [];
var temp = string.split(",");
for (var i = 0; i < temp.length; i++) {
// I could run a check here to see if temp[i] starts with "[", but I'm not sure how to tell where the array ends.
// If it is an array, then I'd need to pass everything inside of the array back into fixS, making it recursive.
// The times I tried to do those two things above, I ran into the issue that the commas inside of the sub arrays also split everything, which I don't want (as the recursive function will deal with that).
toreturn.push(temp[i]);
}
return toreturn;
}
console.log(fixS("'string1',[5,[false]],'string2'"));
// This also doesn't return numbers as numbers or booleans as booleans.
那里不多,但这是我所得到的。感谢任何帮助。
除非您有无法在 JSON 中表示的内容(您的示例可以),否则请使用 JSON:
,而不是自己定制解决方案
页面加载时:
var data = JSON.parse(localStorage.getItem("data") || "null");
if (!data) {
// There wasn't any, initialize
}
或
var data = JSON.parse(localStorage.getItem("data") || "{}");
...如果本地存储中没有任何内容,您需要一个空白对象。
保存数据时:
localStorage.setItem("data", JSON.stringify(data));
正如大卫所说,有 JSON.stringify()
& JSON.parse()
;
您可以使用这些方法:
function save_to_storage(id, anything){
localStorage.setItem(id, JSON.stringify(anything));
}
function load_from_storage(id){
return JSON.parse(localStorage.getItem(id));
}
可以借助JSON.stringify和JSON.parse函数来实现。
让我借助代码片段进行探索。
var original_arr = ["string1", [5, [false]], "string2"]; // array
// Converting this array into string
var converted_str = JSON.stringify(original_arr); // converted into string
// Converting this string back to array
var new_arr = JSON.parse(converted_str ); // back to array
其他答案已经涵盖了它,但请注意 P5.js 还提供了直接工作、保存和加载 JSON 的功能。
看看 saveJSON()
和 loadJSON()
中的函数 the reference。
据我所知,只能将字符串保存到本地存储。所以,我不得不写一个函数来保存数组。如果我调用 console.log(fixA(["string1", [5, [false]], "string2"]));
,我会得到 "'string1',[5,[false]],'string2'"
的输出。这是:
function fixA(array) {
var toreturn = "";
for (var i = 0; i < array.length; i++) {
if (typeof array[i] === 'object') {
toreturn += "[" + fixA(array[i]) + "]";
} else {
if (typeof array[i] === 'string') {
toreturn += "'" + array[i] + "'";
} else {
toreturn += array[i];
}
}
if (i < array.length - 1) {
toreturn += ",";
}
}
return toreturn;
}
console.log(fixA(["string1", [5, [false]], "string2"]));
现在的问题是我不知道如何将它转换回来。我已经尝试了一些东西,但总是对如何将数组转换回来感到困惑。这基本上是我尝试过的:
function fixS(string) {
var toreturn = [];
var temp = string.split(",");
for (var i = 0; i < temp.length; i++) {
// I could run a check here to see if temp[i] starts with "[", but I'm not sure how to tell where the array ends.
// If it is an array, then I'd need to pass everything inside of the array back into fixS, making it recursive.
// The times I tried to do those two things above, I ran into the issue that the commas inside of the sub arrays also split everything, which I don't want (as the recursive function will deal with that).
toreturn.push(temp[i]);
}
return toreturn;
}
console.log(fixS("'string1',[5,[false]],'string2'"));
// This also doesn't return numbers as numbers or booleans as booleans.
那里不多,但这是我所得到的。感谢任何帮助。
除非您有无法在 JSON 中表示的内容(您的示例可以),否则请使用 JSON:
,而不是自己定制解决方案页面加载时:
var data = JSON.parse(localStorage.getItem("data") || "null");
if (!data) {
// There wasn't any, initialize
}
或
var data = JSON.parse(localStorage.getItem("data") || "{}");
...如果本地存储中没有任何内容,您需要一个空白对象。
保存数据时:
localStorage.setItem("data", JSON.stringify(data));
正如大卫所说,有 JSON.stringify()
& JSON.parse()
;
您可以使用这些方法:
function save_to_storage(id, anything){
localStorage.setItem(id, JSON.stringify(anything));
}
function load_from_storage(id){
return JSON.parse(localStorage.getItem(id));
}
可以借助JSON.stringify和JSON.parse函数来实现。 让我借助代码片段进行探索。
var original_arr = ["string1", [5, [false]], "string2"]; // array
// Converting this array into string
var converted_str = JSON.stringify(original_arr); // converted into string
// Converting this string back to array
var new_arr = JSON.parse(converted_str ); // back to array
其他答案已经涵盖了它,但请注意 P5.js 还提供了直接工作、保存和加载 JSON 的功能。
看看 saveJSON()
和 loadJSON()
中的函数 the reference。