0

我有一个字符串变量,定义如下:

Jane's Account-123456789-Bob's Account-123456-Fred's Account-246802-Lily's Account-13579-Jim's Account-46748764-

为了这个问题,假设等于var value1;

我正在尝试获取此字符串并运行一个查询,该查询将找到匹配的帐号,然后显示关联的帐户名称。为此,我首先将变量拆分为一个数组:

var value2=value1.split("-");

当我这样做时,排序功能通过增加数字然后按字母顺序重新排序列表。

value2 = ,123456789,13579,246802,46748764,46748764,Bob's Account,Fred's Account,Jane's Account,Jim's Account,Lily's Account

我想知道如何将字符串分解成一个数组并仍然保持拆分材料的顺序。

这将是所需的输出:

,Jane's Account,123456789,Bob's Account,123456,Fred's Account,246802,Lily's Account,13579,Jim's Account,46748764

谢谢。

4

1 回答 1

0

我想知道是否可以更好地格式化该数据字符串。它来自哪里?它不能只以 JSON 格式传递给您吗?那将是A计划。

B计划是自己解析,把结构变成对象数组之类的东西:

var value1 = "Jane's Account-123456789-Bob's Account-123456-Fred's Account-246802-Lily's Account-13579-Jim's Account-46748764-";

// get rid of the last hyphen
value1 = value1.replace(/-$/, '');

// split up the input
var parts = value1.split('-');

// build the new structure
var accounts = [];
for (var i=0; i < parts.length; i+=2) {
    accounts.push({'name': parts[i], 'number': parts[i + 1]});
}

alert(JSON.stringify(accounts));

// sort accounts by name
accounts.sort(function (a, b) {
    if (a.name == b.name) return 0;
    if (a.name > b.name) return 1;
    return -1;
});

alert(JSON.stringify(accounts));

jsfiddle

于 2013-02-27T01:41:34.727 回答