然而有点混乱......
我有一个很长的字符串somestringDIEmorestringKILLanotherstringDIEmorestring
,我在KILL
将其分开,所以我有以下数组:
["valueArray"]
[0] => "somestringDIEmorestring",
[1] => "anotherstringDIEmorestring"
现在我需要将字符串进一步拆分到DIE的位置,但理想情况下它们需要放在一个数组中,这样我就可以遍历它们并将它们发布到它们受尊重的端点上。
最终我需要这样的东西:
["valueArray1"]
[0] => "somestring",
[1] => "morestring",
[2] => "anotherstring",
[3] => "morestring"
OR:
["valueArray1"]
[0] => ["Array"]
[0] => "somestring",
[1] => "morestring"
[1] => ["Array"]
[0] => "anotherstring",
[1] => "morestring"
最好的解决方法是什么?我目前设置了$.each
功能,但它无法正常工作:
$.each( valueArray, function( i, val ) {
valueArray1[i] = val.split('DIE');
});
任何帮助都会很棒!或者同样,如果有更好的方法可以解决这个问题。
谢谢。
注意:我必须使用字符串,因为它的数据来自localStorage
答案 0 :(得分:3)
你可以简单地拆分正则表达式。
val.split(/DIE|KILL/);
或者,在上下文中:
var val = ...; // your value read in from localStorage
var valArray = val.split(/DIE|KILL/);
这会让你得到一个扁平的数组:
[
[0] => "somestring"
[1] => "morestring",
[2] => "anotherstring",
[3] => "morestring"
]
但是我建议使用更好的序列化格式来在localStorage中以字符串形式存储数据。也许JSON最能做到这一点。以下是通过JSON序列化为localStorage设置和获取结构化数据的示例。您可以对对象,对象数组或可能序列化为JSON的任何其他数据结构执行相同的操作。
// set value
var arrayToStore = [
"somestring"
"morestring",
"anotherstring",
"morestring"
];
localStorage.setItem('storedArray', JSON.stringify(arrayToStore));
//get value
var arrayFromStore = JSON.parse(localStorage.getItem('storedArray'));
这为您提供了更大的灵活性,无需为您可能存储的任何类型的数据结构设想自己的序列化格式。
或者更好的是,编写自己的setter / getter类来处理可以在应用程序中的任何位置使用的本地存储。一个简化的例子:
var localStore = {
var set = function (key, value) {
localStorage.setItem(key, JSON.stringify(value));
return this;
}
var get = function (key) {
return localStorage.getItem(key);
}
};
// usage
localStore.set('storedArray', arrayToStore);
var arrayFromStore = localStore.get('storedArray');