将字符串转换为Javascript中的二维数组

5

我有一个需要转换为数组的字符串:

var string = "[[Restaurants], [Restaurants], [Restaurants], [Caterers, Foods - Take-out]]";

我需要访问它的值,就像这样:
var foo = arr[0];  //returns "Restaurant"
var bar = arr[3];  //returns "Caterers, Foods - Take-out"

我尝试删除第一个和最后一个字符(“ [”和“]”),但当在“,”上进行拆分时仍存在问题,因为某些值内部有逗号。有什么想法吗?


1
你的 'var string = ....' 语句不是有效的 JavaScript。 - frenchie
2
这不是一个字符串 -->>> var string = [[餐厅], [餐厅], [餐厅], [餐饮承办商,外卖食品]] - jeffo
我认为你的意思是 var arr = ["餐厅", "餐厅", "餐厅", "餐饮承包商,外卖食品"] - anthonyfojas
抱歉,我忘记加引号了... 它是一个字符串。 - pnichols
3个回答

2
您可以使用 split 方法和 map 方法的组合。 split 创建数组,而 map 通过返回新的 Array 来清理它:
var string = '[[Restaurants], [Restaurants], [Restaurants], [Caterers, Foods - Take-out]]';

var items = string.split('],').map(
    function(s) { return s.replace(/(\[\[| \[|\]\])/g, ''); }
);

http://jsfiddle.net/4LYpr/


1

由于您正在拆分并尝试首先制作数组,请先删除第一个("[[")和最后一个("]]"),然后通过("], [")拆分字符串。


0

简单:

> a = "[[Restaurants], [Restaurants], [Restaurants], [Caterers, Foods - Take-out]]"
> b = a.slice(1).split(",")
> newB = []
> for (i=0;i < b.length;i++) {
    formatted = b[i].trim().slice(1,-2);
    newB.push(formatted);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接