强制javascript始终返回数组的简单方法

Bri*_*ian 5 javascript arrays

我偶然发现YQL API要查询在Twitter上使用的WOEID,但我可以看到输出并不总是在数组中.API返回一个对象,我对其值感兴趣response.query.results返回以下内容:

  • 如果没有结果,则返回null
  • 如果只有一个结果,则返回一个对象
  • 如果是多个结果,则返回一个数组

我希望结果始终是一个数组.我可以通过使用以下代码检查结果来解决这个问题:

var count = response.query.count;

if(count === 0) {
    return [];
} else if(count === 1) {
    var arr = [];
    arr.push(response.query.results);
    return arr;
} else {
    return response.query.results;
}
Run Code Online (Sandbox Code Playgroud)

是否有一个javascript或lodash函数可以简化上面的代码?如果提供单个对象,它似乎_.forEach并将_.toArray每个属性视为对象.

Nin*_*olz 12

Array#concat如果response.query.results是假的,你可以使用默认数组.

return [].concat(response.query.results || []);
Run Code Online (Sandbox Code Playgroud)