提问者:小点点

无法通过拆分数组中的字符串生成新对象


我有这个字符串数组,我需要在“-”处拆分这些字符串,并用拆分的值创建一个新对象。字符串可以有多个“-”,但我希望总是在最后一个“-”拆分。

数组如下所示:

[
  '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都使用完整的字符串,而不是拆分的版本。

如果有人能帮我做这件事,将不胜感激。


共2个答案

匿名用户

您可以使用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)