将字符串数组拆分为两个数组,每个数组包含原始字符串的一部分

Split an array of strings into two arrays, each with a part of the original string

本文关键字:数组 字符串 包含 原始 一部分 拆分 两个      更新时间:2023-09-26

我正在处理JSON数据,我想使用的其中一项实际上是两个格式化在一起的信息,用|分隔。

这是返回的字符串示例:"Rocket | Mission"。

我已将此信息拉入每个火箭任务的数组中,因此数组中有30个项目

我有一个for循环生成这个数组:

var names = ["rocket1 | mission1", "rocket2 | mission2", ...];

我正在尝试将数组中的项分隔成:

var rocket = ["rocket1, rocket2, rocket3, ...];
var mission = ["mission1, mission2, mission3, ...];

,这样我就可以循环并分别显示每个火箭和任务。

我尝试过使用substring(indexOf(" | ") +1);split();,但我一直在达到一个点,我需要一个循环内的循环内的循环。我是javascript的初学者,我不太了解语法和逻辑,无法弄清楚如何以及在哪里应用这些方法来获得我想要的。

希望这是有意义的,谢谢你的帮助!

使用split同时使用forEach

函数式方法

let names = ["rocket1 | mission1", "rocket2 | mission2"]
let rocket = []
let mission = []
names.forEach(name => {
  let splat = name.split(' | ')
  rocket.push(splat[0])
  mission.push(splat[1])
  })
console.log(rocket)
console.log(mission)

您可以将mapsplit一起使用:

var names = ["rocket1 | mission1", "rocket2 | mission2"];
var rockets = names.map( name => name.split(' | ')[0] );
var missions = names.map( name => name.split(' | ')[1] );
console.log(rockets)
console.log(missions);

替代2

使用reduce和解构在一个循环中完成任务。函数式编程顽固分子可能会喜欢这个,但是对于那些不习惯这些紧凑的reduce结构的人来说,阅读起来比较困难。

var names = ["rocket1 | mission1", "rocket2 | mission2"];
var [rockets, missions] = names.reduce( (pairs, name, i) => 
    ([pairs[0][i], pairs[1][i]] = name.split(' | '), pairs)
, [[], []]);
console.log(rockets);
console.log(missions);

就像squint在评论中说的那样,你需要创建两个数组然后循环遍历原始数组,将其拆分为两个新数组

var rocket = [];
var mission = [];
for (var i = 0; i < names.length; i++) {
    var temp = names[i].split(" | ");
    rocket.push(temp[0]);
    mission.push(temp[1]);
}