Javascript 无法通过拆分数组中的字符串来创建新对象
我有一个字符串数组,需要在“-”处拆分,并使用拆分值创建一个新对象。字符串可以有多个“-”,但我希望总是在最后一个“-”处拆分 该数组如下所示:Javascript 无法通过拆分数组中的字符串来创建新对象,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个字符串数组,需要在“-”处拆分,并使用拆分值创建一个新对象。字符串可以有多个“-”,但我希望总是在最后一个“-”处拆分 该数组如下所示: [ '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 William
[
'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"
}
]
以下是我迄今为止所尝试的:
const arr=[
这是第一部电影-小罗伯特·唐尼,
“这是第二部电影。-本·阿弗莱克”,
“这是第三部电影。”-克里斯·埃文斯,
“这是第四部电影。-罗宾·威廉姆斯”,
“这是第五部电影-艾尔·帕西诺”,
“这是第六部电影-德韦恩·约翰逊”,
这是第七部电影-保罗·陆克文
];
const newArr=arr.map((el)=>{
const movie=el.split('-').shift();
常量actor=el.split('-').pop();
返回{
电影:电影,,
演员:演员
}
});
console.log(newArr)
您可以使用lastindexof和substring来获取所需内容。若演员的名字中也有“-”的话,唯一的问题可能会出现。但休息很好
const arr=[
这是第一部电影-小罗伯特·唐尼,
“这是第二部电影。-本·阿弗莱克”,
“这是第三部电影。”-克里斯·埃文斯,
“这是第四部电影。-罗宾·威廉姆斯”,
“这是第五部电影-艾尔·帕西诺”,
“这是第六部电影-德韦恩·约翰逊”,
这是第七部电影-保罗·陆克文
];
const newArr=arr.map((el)=>{
常数idx=el.lastIndexOf(“–”);
const movie=el.子串(0,idx);
常数actor=el.子串(idx+1);
返回{
电影:电影,,
演员:演员
}
});
console.log(newArr)
由于示例数据中的字符串和您的代码使用了不同类型的-
:-vs-
const arr=[
这是第一部电影-小罗伯特·唐尼,
“这是第二部电影。-本·阿弗莱克”,
“这是第三部电影。”-克里斯·埃文斯,
“这是第四部电影。-罗宾·威廉姆斯”,
“这是第五部电影-艾尔·帕西诺”,
“这是第六部电影-德韦恩·约翰逊”,
这是第七部电影-保罗·陆克文
];
const newArr=arr.map((el)=>{
const movie=el.split('-').shift();
常量actor=el.split('-').pop();
返回{
电影:电影,,
演员:演员
}
});
log(newArr)
使用reducer()和来确定子字符串
const arr=[
这是第一部电影-小罗伯特·唐尼,
“这是第二部电影。-本·阿弗莱克”,
“这是第三部电影。”-克里斯·埃文斯,
“这是第四部电影。-罗宾·威廉姆斯”,
“这是第五部电影-艾尔·帕西诺”,
“这是第六部电影-德韦恩·约翰逊”,
这是第七部电影-保罗·陆克文
];
常数arrAsObj=arr.reduce((acc,val)=>[
…acc,
{电影:val.slice(0,val.lastIndexOf(“–”),
参与者:val.slice(val.lastIndexOf(“–”)+3.trim()}],];
控制台日志(arrAsObj)代码>尝试使用stringValue。lastIndexOf(“-”)您的最后一个连字符是-
,它与前面字符串中的其他连字符不同-
。按-
而不是-
拆分应该可以工作如果总是这样,我可以同时使用这两种变体吗?