1

これが尋ねられた場合は申し訳ありません。質問をどのように表現するのが最善かさえわからないので、コードで行います。注: データのソース形式を制御できないため、そのままで作業する必要があります...

私はこのような配列を持っています(実際には何百ものエントリがあり、すべてこのように混在しており、一部の要素はコンマ区切りの値であり、他の要素はそうではありません):

var array = ["item1", "item2", "item3, item4", "item5", "item6"]

私はすでにこのようにする方法を知っています:

var array = ["item1", "item2", ["item3", "item4"] , "item5", "item6"]

私が必要とするのは、それが次のようになることです:

var array = ["item1", "item2", "item3", "item4", "item5", "item6"]

このプロジェクトは jQuery 1.7 を使用しており、ポイントは、データの静的リストを取得し、それを解析して、jQuery UI Autocomplete プラグインで使用する単一の配列にすることです。繰り返しになりますが、クライアントに渡されるキーワードの形式 (つまり、これらのキーワード) を制御することはできません。アプリケーションが行うことは、クライアント側のコードでしか作業できません (区画化が大好きですよね?)

4

4 に答える 4

4

配列の配列を取得するために 2 番目のステップは必要ありません。その場合joinsplitコンマで指定します。

var array = ["item1", "item2", "item3, item4", "item5", "item6"]
console.log(array.join(',').split(','));

フィドルの例

于 2013-08-15T14:11:00.100 に答える
1

それを行うもう1つの方法:

function flatten (array) {
    function f (a, b) {
        return a.concat(
            (b instanceof Array) ? b.reduce(f, []) : [b]);
    }
    return array.reduce(f, []);
}
于 2013-08-15T14:50:30.997 に答える
1

どうぞ:

http://jsfiddle.net/Rq5fb/

var array = ["item1", "item2", ["item3", "item4"], "item5", "item6"];

var result = [];

for (var i = 0, len = array.length; i < len; i++) {
    if (typeof array[i] !== "object") {
        result.push(array[i]);
    }
    else
    {
        while(array[i].length)
        {
            result.push(array[i].shift());
        }
    }
}
于 2013-08-15T14:11:24.643 に答える