拆分包含在数组中的字符串并保存到另一个数组中

时间:2014-09-11 15:46:12

标签: javascript jquery arrays

然而有点混乱......

我有一个很长的字符串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

1 个答案:

答案 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');