Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript中的变量获取数组_Javascript - Fatal编程技术网

从javascript中的变量获取数组

从javascript中的变量获取数组,javascript,Javascript,我想从一个变量中得到一个数组。如果它还不是数组,我想返回一个新数组,其中变量是唯一的条目。示例: toArray('test'); // => ["test"] toArray(['test']); // => ["test"] 我的实际工作代码是: var toArray; toArray = function(o) { if (Array.isArray(o)) { return o.slice(); } else { return [o]; }

我想从一个变量中得到一个数组。如果它还不是数组,我想返回一个新数组,其中变量是唯一的条目。示例:

toArray('test'); // => ["test"]
toArray(['test']); // => ["test"]
我的实际工作代码是:

var toArray;

toArray = function(o) {
  if (Array.isArray(o)) {
    return o.slice();
  } else {
    return [o];
  }
};
我想知道是否有更好的方法(比如原生的或使用下划线.js)

在ruby中,您可以执行以下操作:

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

我相信你可以把它切碎:

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

演示:

我相信您可以将其切分:

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

只需使用
.concat()


阵列将展平为新阵列。其他任何内容都只需添加。

只需使用
.concat()




阵列将展平为新阵列。只需添加任何其他内容。

您不能。至少在chrome中不是。对于数字键,请确保--
{0:123,1:'bar',长度:2}
。但是,我认为OP是在
数组
之后-包装而不是直接转换。这不是我真正想要的。我想将对象作为数组的第一个条目(如果它还不是数组)。因此,对象的预期结果将是:
[{0:123,1:'bar',length:2}]
。但很高兴知道您可以调用对象上的slice!你不能。至少在chrome中不是。对于数字键,请确保--
{0:123,1:'bar',长度:2}
。但是,我认为OP是在
数组
之后-包装而不是直接转换。这不是我真正想要的。我想将对象作为数组的第一个条目(如果它还不是数组)。因此,对象的预期结果将是:
[{0:123,1:'bar',length:2}]
。但很高兴知道您可以调用对象上的slice!是的,它可以工作,但实际上是完全相同的代码,只是作为三元代码编写。我在寻找其他的方法,比如单一方法。但我真的怀疑它的存在:)你并不是真的将一个对象转换成数组,看起来你只是返回一个新数组,如果它已经是数组,如果它是字符串,那么我不认为有一个内置函数,它不需要一些类型检查和两种不同的方法,就像上面所说的。是的,你是对的,我不是真的在改变它。我对问题进行了编辑,使之更清楚。谢谢:)从一些答案来看,似乎您可以使用concat()将其与现有数组连接起来,然后创建一个数组,不管它是字符串还是数组,所以这很简洁,即使它做的事情几乎相同。是的,我接受了
concat()
的方式。不需要一个新的函数是的,它可以工作,但实际上它是完全相同的代码,只是作为三元代码编写的。我在寻找其他的方法,比如单一方法。但我真的怀疑它的存在:)你并不是真的将一个对象转换成数组,看起来你只是返回一个新数组,如果它已经是数组,如果它是字符串,那么我不认为有一个内置函数,它不需要一些类型检查和两种不同的方法,就像上面所说的。是的,你是对的,我不是真的在改变它。我对问题进行了编辑,使之更清楚。谢谢:)从一些答案来看,似乎您可以使用concat()将其与现有数组连接起来,然后创建一个数组,不管它是字符串还是数组,所以这很简洁,即使它做的事情几乎相同。是的,我接受了
concat()
的方式。无需使用新函数。您的示例使用的是字符串,而不是对象。您的问题是“如果它还不是[一个数组]”,但无论如何都会返回一个新数组。你到底想要什么?它可以是任何不是数组的东西:对象、字符串、整数……你的例子使用的是字符串,而不是对象。您的问题是“如果它还不是[一个数组]”,但无论如何都会返回一个新数组。你到底想要什么?它可以是任何不是数组的东西:对象、字符串、整数。。。
[].concat("test");   // ["test"]
[].concat(["test"]); // ["test"]