2013-07-11 54 views
5

2維數組我有這個字符串需要被轉換爲一個數組:字符串轉換爲在Javascript

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

你的 '無功串= ......' 的語句是無效的JavaScript。 – frenchie

+2

這不是一個字符串 - >>> var string = [[Restaurants],[Restaurants],[Restaurants],[Caterers,Foods - Take-out]] – jeffo

+0

我想你的意思是'var arr = [「Restaurants」 ,「餐廳」,「餐廳」,「餐飲店,食品 - 外賣」]' – anthonyfojas

回答

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); 
}