1

リモート サーバーから返されるデータがあります。ただし、私が直面している問題は、「もの」が「もの」の配列または単一の「もの」になることがあるということです

「もの」には、名前と値のプロパティがあり、他のいくつかのプロパティもあります。

私が抱えている問題は、単一の「もの」が返される場合です。今、私はこのようなコードを持っています。もっと良い方法があるはずです。

var array = [];
if (data.results.thing.length > 1) {

var array = $.map(data.results.thing, function (item) {

    return {
        label: item.name,
        value: item.value
    }
});
}
else {

array = $.makeArray({
    label: data.results.thing.name,
    value: data.results.thing.value
});
}
4

3 に答える 3

4

結局のところ、jQuery はそれよりもスマートです。$.makeArrayは真の配列をそのまま返すか、必要に応じてオブジェクトを配列にします。

var array = $.map( $.makeArray(data.results.thing), function (item) {

    return {
        label: item.name,
        value: item.value
    }
});
于 2012-10-02T22:58:46.543 に答える
0

使用jQuery.isArray:

var thing = data.results.thing;
if (! $.isArray(thing))
    thing = [ thing ]; // array literal containing one item: thing
var array = $.map(thing, function (item) {
    return {
        label: item.name,
        value: item.value
    }
});
于 2012-10-02T23:00:22.363 に答える
0

メソッドを使用してisArray、値が配列であるかどうかを判断し、そうでない場合は配列にすることができます。

var arr = data.results.thing;

if (!$.isArray(arr)) {
  arr = [arr];
}

これは常に配列なので、常に同じように扱うことができます。

于 2012-10-02T23:00:43.910 に答える