jquery:将分离的数组放在数组中而不将它们连接起来

时间:2016-12-26 12:22:07

标签: javascript jquery arrays

我有一个输入,如下所示:

"a"

  ["a","b"]

  [["a","b"],["c"]] 

目标是将它们转换为第三种模式。我的意思是我需要一个大数组,包含多个数组。 作为伪代码,我尝试如下:

  input=[].concat(input);
  for (var t in input)
   {
     t=[].concat(input);
   }

但它不适用于第二种模式,因为我想要[["a","b"]]

"a"=>[["a"]]

  ["a","b"]=>[["a","b"]]

  [["a","b"],["c"]] => [["a","b"],["c"]] 

2 个答案:

答案 0 :(得分:2)

您可以检查给定值是否为数组,如果内部项也是数组,如果没有,则将值包装在数组中。



function convert(v) {
    if (!Array.isArray(v)) {
        v = [v];
    }
    if (!Array.isArray(v[0])) {
        v = [v];
    }
    return v;
}

console.log(convert("a"));                 // [["a"]]
console.log(convert(["a", "b"]));          // [["a", "b"]]
console.log(convert([["a", "b"], ["c"]])); // [["a", "b"], ["c"]]

.as-console-wrapper { max-height: 100% !important; top: 0; }




如果您需要测试内部数组的每个项目,那么您可以先检查所有项目。



function convert(v) {
    if (!Array.isArray(v)) {
        v = [v];
    }
    if (v.some(function (a) { return !Array.isArray(a); })) {
        v = [v];
    }
    return v;
}

console.log(convert("a"));               // [["a"]]
console.log(convert(["a", "b"]));        // [["a", "b"]]
console.log(convert([["a", "b"], "c"])); // [[["a", "b"], "c"]]

.as-console-wrapper { max-height: 100% !important; top: 0; }




答案 1 :(得分:0)

您可以执行以下操作;

var inputs = ["a", ["a","b"],[["a","b"],["c"]]],
    result = inputs.map(a => [[].concat(...a)]);
console.log(JSON.stringify(result));

相关问题