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 に答える