0

JSON ファイルの内容をコンボ ボックスに追加しようとしています。これはうまく機能しますが、JSON で出力されるフィールドの一部に複数の値があるため、コンボボックスの一部の行には複数の値 (たとえば、「ヒンディー語、英語、フランス語」など) があります。コンボボックスに挿入する前に配列を分割して、各値がそれぞれの行に表示されるようにしようとしていますが、分割配列関数をどこに配置すればよいかわかりません。誰かが私を正しい場所に向けることができますか? ありがとう!

 $('#combolist-languages').html(function () {

            var ret = '<option value="-1" selected>Select language_</option>',
                u = user.slice(),
                arr = [];

            (function get() {
                if (u.length) {
                    var v = u.shift();      

                    if ($.inArray(v.Languages, arr) == -1) {

                        arr.push(v.Languages);
                        ret += '<option value="">' + v.Languages + '</option>';
                    }
                    get();
                }
            }());

            return ret;
        });
4

2 に答える 2

0

これは本当に JSON ファイル構造に依存しますが、関数 is_object と is_array を使用して、値が個別であるかどうかを確認できると思います。

var v = u.shift(); の直後だと思います。あなたは出来る:

if(is_object(v)){
    $.each(v.split(','), function(index, item){
        arr.push(item.Languages);
        ret+= '<option value="">' + item.Languages + '</option>';
    }
}

JSONオブジェクトがどのように構築されているのか本当にわからないので、これは間違っているかもしれません.

于 2013-09-05T18:27:32.023 に答える
0

私があなたのことを完全に理解しているかどうかはわかりませんが、あなたは考えすぎていると思います

$('#combolist-languages').html(function () {

    var ret = '<option value="-1" selected>Select language_</option>',
        arr = [];

    $.each(user, function(i, v) {
        if ($.inArray(v.Languages, arr) === -1) {
            arr.push(v.Languages);
            ret += '<option value="">' + v.Languages + '</option>';
        }
    });

    return ret;
});
于 2013-09-05T18:25:52.510 に答える