在javascript中转换数组中的String

时间:2017-07-03 06:19:39

标签: javascript jquery

我有一个这样的字符串,其中第一个值是state,其他值是它的大写,我想使用javascript / jquery在数组中转换此字符串,并且包含字符串之间的空格。

"[['Congo' , '"Candice Levy"'],['Panama' , '"Xerxes Smith"'],['Tanzania' , '"Levi Douglas"'],['africa' , '"Uriel Benton"'],['Gabon' , '"Celeste Pugh"'],['Syrian' , '"Vance Campos"'],['Kyrgyzstan' , '"Wanda Garza"']]

我的预期输出

arr[0]= Congo
arr[1]= Candice Levy
arr[2]= Panama
arr[3]=Xerxes Smith

我见过像this这样的例子,但没有得到任何满意的答案。请帮助

5 个答案:

答案 0 :(得分:1)

**编辑:**感谢shaochuancs的评论。

var str = "[['Congo' , '\"Candice Levy\"'],['Panama' , '\"Xerxes Smith\"'],['Tanzania' , '\"Levi Douglas\"'],['africa' , '\"Uriel Benton\"'],['Gabon' , '\"Celeste Pugh\"'],['Syrian' , '\"Vance Campos\"'],['Kyrgyzstan' , '\"Wanda Garza\"']]";

var str = str.replace(/'/g,'"').replace(/""/g,'"');
var arr = JSON.parse(str);
var merged = [].concat.apply([], arr);

console.log(merged);

var arr = [['Congo' , '"Candice Levy"'],['Panama' , '"Xerxes Smith"'],['Tanzania' , '"Levi Douglas"'],['africa' , '"Uriel Benton"'],['Gabon' , '"Celeste Pugh"'],['Syrian' , '"Vance Campos"'],['Kyrgyzstan' , '"Wanda Garza"']];

/********Using foreach*****************/
var newArray = [];
arr.forEach(function(ele) {
  ele.forEach(function(d) {
    newArray.push(d);
  });
});
//console.log(newArray);

/**********Using concat*********************/
var merged = [].concat.apply([], arr);
//console.log(merged);

var result = []
merged.forEach(str => result.push(str.replace(/"/g, "")));
console.log(result);

您可以使用以下方法从字符串

中删除\"
var result = []
merged.forEach(str => result.push(str.replace(/"/g, "")));

答案 1 :(得分:0)

我的理解是这样的: 你有一个像你提供的字符串。您希望将其转换为您在问题(编辑)中提到的数组。这样做了:

function showInput(){
    var str = "\"[['Congo' , '\"Candice Levy\"'],['Panama' , '\"Xerxes Smith\"'],['Tanzania' , '\"Levi Douglas\"'],['africa' , '\"Uriel Benton\"'],['Gabon' , '\"Celeste Pugh\"'],['Syrian' , '\"Vance Campos\"'],['Kyrgyzstan' , '\"Wanda Garza\"']]";
    var res = str.split(",");
    var array = [];
    for (var i=0; i<res.length; i = i + 2){
        array[i] = res[i].substring(res[i].indexOf("'")+1,res[i].lastIndexOf("'"));
        array[i+1] = res[i+1].substring(res[i+1].indexOf('"')+1,res[i+1].lastIndexOf('"'));
    }
    //array variable has what you require
    alert(array.join());
}

我正在做的是我首先用逗号分割所有内容,然后将其放入一个名为&#39; array&#39;的数组中。现在,我迭代一堆二(因为我们有一对,州后面是首都)。对于每个州,我们只需要获得单引号之间的子串。对于每个资本,我们只需要双引号之间的子串。

答案 2 :(得分:0)

以下是使用String split的示例:

&#13;
&#13;
'use strict';

var s = "[['Congo' , '\"Candice Levy\"'],['Panama' , '\"Xerxes Smith\"'],['Tanzania' , '\"Levi Douglas\"'],['africa' , '\"Uriel Benton\"'],['Gabon' , '\"Celeste Pugh\"'],['Syrian' , '\"Vance Campos\"'],['Kyrgyzstan' , '\"Wanda Garza\"']]";

var arr = s.split(/]\s*,\s*\[/);

var resultArr = [];
for (var i in arr) {
  var stateAndCap = arr[i];
  var stateAndCapArr = stateAndCap.split(/\s*,\s*/);

  var state = stateAndCapArr[0].split('\'')[1];
  var cap = stateAndCapArr[1].split('"')[1];
  resultArr.push(state);
  resultArr.push(cap);
}

console.log(resultArr);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用正则表达式将“[,],\”替换为'',然后使用split方法替换结果。

var obj = [
    [
        "Congo",
        "\"Candice Levy\""
    ],
    [
        "Panama",
        "\"Xerxes Smith\""
    ],
    [
        "Tanzania",
        "\"Levi Douglas\""
    ],
    [
        "africa",
        "\"Uriel Benton\""
    ],
    [
        "Gabon",
        "\"Celeste Pugh\""
    ],
    [
        "Syrian",
        "\"Vance Campos\""
    ],
    [
        "Kyrgyzstan",
        "\"Wanda Garza\""
    ]
];
var expectVal = JSON.stringify(obj).replace(/[\\\"\[\]]/g, '').split(",");

答案 4 :(得分:0)

我们可以通过逗号运算符拆分整个字符串然后从每个字符串中删除不需要的符号来解决它。

SessionManager