我有这个字符串数组,我需要在“-”处拆分这些字符串,并用拆分的值创建一个新对象。字符串可以有多个“-”,但我希望总是在最后一个“-”拆分。
数组如下所示:
[
'This is movie number 1. – Robert Downey Jr',
'This is movie number 2. – Ben Afleck',
'This is movie number 3. – Chris Evans',
'This is movie number 4. – Robin Williams',
'This - is movie - number 5. – Al Pacino',
'This is movie number 6. – Dwayne Johnson',
'This is - movie number 7. – Paul Rudd'
]
我希望达到的目标是:
[
{
movie: "This is movie number 1.",
actor: "Robert Downey Jr"
},
{
movie: "This is movie number 2.",
actor: "Ben Afleck"
},
{
movie: "This is movie number 3.",
actor: "Chris Evans"
},
{
movie: "This is movie number 4.",
actor: "Robin Williams"
},
{
movie: "This - is movie - number 5.",
actor: "Al Pacino"
},
{
movie: "This is movie number 6.",
actor: "Dwayne Johnson"
},
{
movie: "This is - movie number 7.",
actor: "Paul Rudd"
}
]
到目前为止,我尝试了以下方法:
null
const arr = [
'This is movie number 1. – Robert Downey Jr',
'This is movie number 2. – Ben Afleck',
'This is movie number 3. – Chris Evans',
'This is movie number 4. – Robin Williams',
'This - is movie - number 5. – Al Pacino',
'This is movie number 6. – Dwayne Johnson',
'This is - movie number 7. – Paul Rudd'
];
const newArr = arr.map((el) => {
const movie = el.split('-').shift();
const actor = el.split('-').pop();
return {
movie: movie,
actor: actor
}
});
console.log(newArr)
null
我可以制作对象,但是movie和actor都使用完整的字符串,而不是拆分的版本。
如果有人能帮我做这件事,将不胜感激。
您可以使用lastindexof和substring来获得您想要的内容。只有当执行元名称中也有“-”时才会出现问题。但休息是有好处的
null
const arr = [
'This is movie number 1. – Robert Downey Jr',
'This is movie number 2. – Ben Afleck',
'This is movie number 3. – Chris Evans',
'This is movie number 4. – Robin Williams',
'This - is movie - number 5. – Al Pacino',
'This is movie number 6. – Dwayne Johnson',
'This is - movie number 7. – Paul Rudd'
];
const newArr = arr.map((el) => {
const idx = el.lastIndexOf("–");
const movie = el.substring(0, idx);
const actor = el.substring(idx+1);
return {
movie: movie,
actor: actor
}
});
console.log(newArr)
您的代码无法工作,因为示例数据中的字符串和您的代码使用了不同类型的-
:-vs-
null
const arr = [
'This is movie number 1. – Robert Downey Jr',
'This is movie number 2. – Ben Afleck',
'This is movie number 3. – Chris Evans',
'This is movie number 4. – Robin Williams',
'This - is movie - number 5. – Al Pacino',
'This is movie number 6. – Dwayne Johnson',
'This is - movie number 7. – Paul Rudd'
];
const newArr = arr.map((el) => {
const movie = el.split('–').shift();
const actor = el.split('–').pop();
return {
movie: movie,
actor: actor
}
});
console.log(newArr)