当前位置: 首页 > 知识库问答 >
问题:

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

罗和煦
2023-03-14

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

数组如下所示:

[
  '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个答案

庞修贤
2023-03-14

您的代码无法工作,因为示例数据中的字符串和您的代码使用了不同类型的-:-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)
公西博实
2023-03-14

您可以使用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)
 类似资料:
  • 问题内容: 说我在这里有一个字符串: 我想在空白处分割字符串并将值分配给它们各自的变量 此外,有时用户可能没有姓氏。 问题答案: Swift的方法是使用全局函数,如下所示: 与 Swift 2 在Swift 2中,由于引入了内部CharacterView类型,对split的使用变得更加复杂。这意味着String不再采用SequenceType或CollectionType协议,而必须使用该属性来访

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:

  • Java官方文档说明: 例如,字符串使用以下表达式Regex Result生成以下结果: 这就是我需要它工作的方式。然而,如果我运行这个: 它打印: 这与我的预期相去甚远: 为什么会这样?

  • 问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生

  • 我有一个随机地址字符串,如 我想将其拆分为具有两个条件的字符串数组: 该字符串数组的每个元素的长度小于或等于20 字符串数组的元素没有尴尬的结尾 例如,每20个字符拆分将产生: 但正确的输出是: 注意字符串数组中的每个元素是如何小于或等于20的。 以上是我对这段代码的输出:

  • 我有类似这样的ab阵列: 和下面这样的字符串: 正如您在该字符串中看到,我有字符存在于运算符数组中,现在我要根据数组中存在的运算符字符拆分字符串。我知道我可以用regex做这件事,但我不知道怎么做