【问题标题】:Angular split string to array角度拆分字符串到数组
【发布时间】:2020-08-12 22:13:09
【问题描述】:

我有这样的字符串消息:

messages = "Line 249 : Validation error, Line 287 : Validation error"

我想这样拆分这条消息:

messages [] = [ { position: 1, message: 'Line 249 : Validation error' },

{ position: 2, message: 'Line 287 : Validation error' }]

请您帮忙解决一下,谢谢。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • @Ilyas Khallouq 我为您添加了一些比angular 更相关的标签。这应该会让你更快得到答案。

标签: javascript regex angular string


【解决方案1】:

将字符串转换为对象数组的最简单方法是首先使用分隔符分割字符串,在这种情况下是逗号,所以开始。

const test = "Line 249 : Validation error, Line 287 : Validation error";
const parts = test.split(",");

然后,您想使用 map 数组函数为每个已拆分的部分返回一个对象。 es6 map 函数有一个回调,它返回数组的一部分和找到它的索引。你不想要索引,而是一个序数(根据你上面的例子)

我会这样做:

const test = "Line 249 : Validation error, Line 287 : Validation error"; 
const parts = test.split(",").map((text, index) => {
  return {
    position: index+1,
    message: text.trim()
  }
});

现在,parts 变量包含一个与您所需的输出相匹配的对象数组

【讨论】:

  • 正在寻找一种允许用户输入逗号分隔值并使其成为模型成员的字符串数组的方法。没有从 ngModel 到该对象成员的直接映射,但是,我创建了一个字符串类型的组件成员,它代表用户输入,然后单击保存按钮,我为自己创建了一个函数,可以将字符串直接拆分并映射到字符串数组:var stringArray=test.split(',').map(text => { return text.trim() });。希望这对您有所帮助。
【解决方案2】:

我认为您的错误消息可以使用 javascript 拆分方法拆分为一个数组。 所以

messages = message.split(',') 

会变魔术 但是要添加您的位置,

let messages = "Line 249 : Validation error, Line 287 : Validation error"

messages= messages.split(',').map((x,index)=>{
    let obj ={}
     obj.position=index+1;
     obj.message = x
     return obj;
 });
 
 console.log( messages )

【讨论】:

  • 这将创建一个字符串数组,而不是对象数组。
  • 嗨,当我这样做时,我得到以下结果:第 429 行:学生 ID 不能为空,第 430 行:学生 ID 不能为空。我想要这样的东西:messages [] = [ { position: 1, message: 'Line 249 : Validation error' }, { position: 2, message: 'Line 287 : Validation error' }]
  • 我将您的代码转换为交互式 sn-p。您可能还想trim() 消息字符串。除此之外,它看起来是一个很好的答案:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多