Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将未用逗号分隔的字符串拆分为具有属性的对象数组?_Javascript_Arrays_Split - Fatal编程技术网

Javascript 如何将未用逗号分隔的字符串拆分为具有属性的对象数组?

Javascript 如何将未用逗号分隔的字符串拆分为具有属性的对象数组?,javascript,arrays,split,Javascript,Arrays,Split,我有一系列问题和答案,如下所示: var string = "(1) blah blah blah ANSWER: bling (2) bleh bleh bleh ANSWER: bleng" 我想把它变成一个对象数组,比如: var array = [ { question: "(1) blah blah blah", answer: "ANSWER: bling" }, { question: "(2) bleh bleh bleh",

我有一系列问题和答案,如下所示:

var string = "(1) blah blah blah ANSWER: bling (2) bleh bleh bleh ANSWER: bleng" 
我想把它变成一个对象数组,比如:

var array = [
  {
    question: "(1) blah blah blah", 
    answer: "ANSWER: bling"
  },
  {
    question: "(2) bleh bleh bleh", 
    answer: "ANSWER: bleng"
  },
]
问题是我想要分割每个对象的位置是1、2、3等等

我尝试过var array=string.split来分割每个问题编号的第一个括号中的对象,但这不是一个有效的分割点


是否有任何方法可以使用.split方法在这些点进行拆分?一旦拆分成功,如何分配属性问题:和答案:?

您可以使用正则表达式匹配后跟非字符的,然后通过在回答之前的空格上拆分将每个子匹配映射到对象:

const string=1废话废话回答:bling 2废话废话回答:bleng; 常量arr=字符串 .match/\[^]+\S/g .mapsubstr=>{ 常量[问题,答案]=子项拆分/?=答案/; 返回{问题,答案}; };
console.logarr 我用正则表达式解决这个问题,它将匹配从开始1到下一个括号开始的所有内容。此正则表达式将匹配第1组中的问题和第2组中的答案:

常量regex=/\\d+?\.*答案:.+?:\/g
还要检查string.match方法,您将需要此方法来获取所有匹配项的数组:

使用标识符拆分字符串回答:如何访问此arr的属性?比如,如果我想将段落元素的HTML显示为第一个对象的question属性,就像访问任何对象数组的属性一样。arr[0]。我知道了。谢谢使用正则表达式是一种明智的方法。你能解释一下.map方法中发生了什么吗?将每个子字符串对象拆分为属性?我不完全理解.map–我想我应该阅读Mozilla页面上的内容。.map根据回调的返回值将一个数组转换为另一个数组。在这里,字符串数组转换为对象数组,因为回调返回一个对象。啊,我现在看到:.match将字符串转换为字符串数组arr,在定义的正则表达式处拆分。然后.map方法通过将arr中的每个字符串拆分为具有问答属性的对象,从父数组arr创建一个新数组。谢谢