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

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

"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"]] 

最佳答案 您可以检查给定值是否为数组,如果内部项也是数组,如果不是,则将值包装在数组中.

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; }
点赞