2012-10-02 32 views
1

我有從遠程服務器返回的數據。然而,我遇到的問題有時是「事物」將是一系列「事物」或只是一個「事物」JSONP本地轉換爲數組?

「事物」有一個名稱和值屬性,以及其他幾個。

我遇到的問題是隻有一個「東西」返回。現在我的代碼看起來像這樣。一定有更好的方法。

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

事實證明,jQuery比這更聰明; $.makeArray將返回一個真陣列是,或使對象到一個數組根據需要:

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

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

[*** jsFiddle ***](http://jsfiddle.net/acZAX/) – nbrooks

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 
    } 
}); 
0

使用isArray方法,以確定是否一個值是一個數組,並如果不是:

var arr = data.results.thing; 

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

現在它總是一個數組,所以你可以一直以相同的方式對待它。