2016-09-15 63 views
1

我需要將數組的元素導出到字符串,但在元素周圍保留單引號。正如你所看到的,將它們導出到toString()方法輸出Banana, Orange, Apple, Mango,但我需要讓它們像'Banana', 'Orange', 'Apple', 'Mango'如何在單引號中包裝字符串組

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
 
var map = fruits.toString(); 
 

 
console.log(map);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

能否請你讓我知道如何做到這一點?

+0

請注意,['.toSource()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource)會這樣做,儘管它很少支持。您還可以使用['JSON.stringify()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)並將單引號替換爲雙引號。 –

回答

3

ES6

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
 
// creates a new array containing: ["'Banana'", "'Orange'", "'Apple'", "'Mango'"] 
 
var exportedFruits = fruits.map(fruit => "'" + fruit + "'"); 
 
console.log(exportedFruits.toString())

ES5

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
 
// creates a new array containing: ["'Banana'", "'Orange'", "'Apple'", "'Mango'"] 
 
var exportedFruits = fruits.map(function(fruit){ 
 
    return "'" + fruit + "'"; 
 
}); 
 
console.log(exportedFruits.toString())

+1

你能解釋一下這裏發生了什麼嗎? – Leeish

+0

它們將數組中的每個值替換爲相同的值,但是在結尾處value =>'value''用引號括起來。 –

+0

編輯添加評論,但@SpencerWieczorek只是解釋了它... – topheman

0

由於您使用的是jQuery,因此您可以使用jQuery的map

JavaScript ES6/ES2015也有一個Array.protytype.map,它的工作原理非常相似。

var arr = ['a', 'b', 'c']; 
 

 
var res = $.map(arr, (function(val) { 
 
    return "'" + val + "'"; 
 
    })); 
 

 
console.log(res.join(","));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

0

這是一種方法。

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
 
var map = fruits.map(myFun).toString(); 
 

 
console.log(map); 
 
function myFun(val,i,array){ 
 
    return "'"+val+"'"; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1
var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var result = "'" + fruits.join("','") + "'"; 
0

我會暫停在Array.map解決方案。當然,一個進行連接操作的地圖是有用的,但是有點笨重。當然,我們在小型系統中使用nano時間,但在處理時間非常關鍵的某些設置中,這可能很重要。將大數據集轉換爲以逗號分隔的字符串(例如使用CSV導出)是常見情況。良好的老式加入很難擊敗。

ES6 Array.map:18.2150毫秒

ES5 Array.map:

//基於字符串數組新時代編輯21.7800毫秒

加入:3.5750毫秒

var map, start, end, fruits; 
 

 

 
fruits = []; 
 
for(var i = 0; i < 50000; i++){ 
 
fruits.push(i.toString()); 
 
} 
 

 
start = performance.now(); 
 
var exportedFruits = fruits.map(fruit => "'" + fruit + "'"); 
 
exportedFruits = exportedFruits.toString(); 
 
end = performance.now(); 
 
console.log((end - start).toFixed(4)+" ms"); 
 

 
start = performance.now(); 
 
var exportedFruits = fruits.map(function(fruit){ 
 
    return "'" + fruit + "'"; 
 
}); 
 
exportedFruits = exportedFruits.toString(); 
 
end = performance.now(); 
 
console.log((end - start).toFixed(4)+" ms"); 
 

 

 
start = performance.now(); 
 
map = "'" + fruits.join("','") +"'"; 
 
end = performance.now(); 
 
console.log((end - start).toFixed(4)+" ms"); 
 

編輯:我忘了測量前兩個toString操作。

+0

你應該'fruits.push(i.toString())'(在你的數組中已經有字符串,就像原始用例一樣),你甚至可以更好的性能 – topheman

+0

經過這個,最後的連接方法減少到5毫秒。謝謝。 – Radio

相關問題