将数组拆分为多个数组

Splitting array into multiple arrays

我已经查找了这些问题的答案 How to split a long array into smaller arrays, with JavaScriptSplit array into chunks 但我仍然不明白我做错了什么。

我有多个看起来像这样的随机数组

['dog']
['dog', 'cat']
['cat', 'apple', 'frog']
['apple', 'dog']
etc.

我想把它们拆分成这样

['dog']
['dog'] ['cat']
['cat'] ['apple'] ['frog']
['apple'] ['dog']

我想知道是否可以使用 foreach 循环遍历所有数组并将它们拆分为单个数组。

这就是我的代码的样子

 var arrays = press.post_category;
      arrays.forEach(function(item){
      var arr = [];
      var size = 1;
      for (let i = 0; i < item.length; i += size)
      arr.push(item.slice(i, i + size));
      console.log(arr);
        });

这个输出是

["d","o","g"]
["d","o","g"," ","c","a","t"]
etc.

这不是我想要的。我不确定为什么将其拆分为每个单独的字母而不是数组中的每个值。

我尽量避免使用 SPLICE,只在必要时才使用 SLICE。

提前致谢。

编辑:我的代码输出现在是。我尝试使用 flat() 但这只是将它带回到 ["dog", "cat"].

var animals = [
    [
        [
            "dog"
        ],
        [
            "cat"
        ]
    ]
];

我有嵌套数组中的狗和猫,我试图摆脱多余的数组,所以它看起来像这样

var animals = [
    
        [
            "dog"
        ],
        [
            "cat"
        ]
];

您可以对每个数组使用 .map()

const animals = ['dog', 'cat', 'lama']

const result = animals.map(animal => [animal]) 

console.log(result)
// [ ['dog'], ['cat'], ['lama'] ]

然后您可以将结果推入另一个数组,或者您可以使用 .reduce() 生成最终结果。

您可以在此处使用 map 将这些单独的值 return 作为数组放入新数组,只需将它们用大括号括起来即可。

let arrays = ['cat', 'apple', 'frog'];
console.log(JSON.stringify(arrays));

let final = arrays.map(m=>{return [m]});
console.log(JSON.stringify(final));

您还可以定义一个拆分器函数,然后只针对数组调用它。

let arrays= ['cat', 'apple', 'frog'];
const splitter=(arr)=>arr.map(m=>{return [m]});
console.log(JSON.stringify(splitter(arrays)));

如果你必须在很多地方这样做,或者如果你有一个由这些数组组成的数组并且想要迭代它并在每个数组上使用拆分器常量,这将很有用,就像这样:

let arrays = [
  ['dog'],
  ['dog', 'cat'],
  ['cat', 'apple', 'frog'],
  ['apple', 'dog']
];
const splitter=(arr)=>arr.map(m=>{return [m]});

let final = arrays.map(m=>{return splitter(m)});
console.log(final);

或者如果您需要使用未知深度的数组递归执行此操作:

let arrays = [
  ['dog'],
  ['dog', 'cat'],
  [
    ['test', 'it', 'out'],
    ['cat', 'apple', 'frog']
  ],
  [
    ['one', 'more'],
    ['two', 'more']
  ],
  ['apple', 'dog']
];

const splitter=(arr)=>arr.map(m=>{
  return Array.isArray(m) ? splitter(m) : [m]
});

let final = splitter(arrays);
console.log(final);

var arrays = [
      'dog',
      'dog,cat',
      'cat,apple,frog',
      'apple,dog'
  ];
  var arr = [];
  arrays.forEach((item) => arr.push(item.split(",")));
  console.log(arr);

你是这个意思吗?