0

我正在寻找从变量中获取数组。如果它还不是一个数组,我想返回一个以变量作为唯一条目的新数组。示例:

toArray('test'); // => ["test"]
toArray(['test']); // => ["test"]

我的实际工作代码是:

var toArray;

toArray = function(o) {
  if (Array.isArray(o)) {
    return o.slice();
  } else {
    return [o];
  }
};

我想知道是否有更好的方法(例如本机或使用 underscore.js)。

在红宝石中,您可以执行以下操作:

Array('test') # => ["test"]
Array(['test']) # => ["test"]
4

3 回答 3

2

只需使用.concat().

[].concat("test");   // ["test"]
[].concat(["test"]); // ["test"]

数组将被展平成新的数组。其他任何内容都将简单地添加。

于 2013-03-05T01:16:05.670 回答
1
function toArray(o) {
  return Array.isArray(o) ? o.slice() : [o];
};
于 2013-03-05T01:04:54.500 回答
0

我相信你可以切片它:

var fooObj = {0: 123, 1: 'bar', length: 2};
var fooArr = Array.prototype.slice.call(fooObj);

演示:http: //jsfiddle.net/sh5R9/

于 2013-03-05T01:05:17.103 回答