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 に答える