我正在处理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的初学者,我不太了解语法和逻辑,无法弄清楚如何以及在哪里应用这些方法来获得我想要的东西。
希望这有意义感谢您的帮助!
答案 0 :(得分:3)
使用 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)
答案 1 :(得分:3)
您可以将map
与split
一起使用:
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);
这使用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);
答案 2 :(得分:2)
就像斜视在评论中所说的那样,你想要创建两个数组,然后循环遍历原始数组,将其拆分为两个新数组
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]);
}