1

我有从远程服务器返回的数据。但是,我遇到的问题有时是“事物”将是一系列“事物”或只是一个“事物”

"thing" 有一个 name 和 value 属性,还有其他几个。

我遇到的问题是只返回一个“东西”。现在我有看起来像这样的代码。一定有更好的方法。

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 回答