2017-05-26 68 views
0

在使用join()函數後,我無法弄清楚如何從數組中刪除項目。如何在.join()之後使用array.splice()?

正如你所看到的,第一個方法Array.splice()的作品,但第二個不...

var recordsArray1 = ['a','b','c','d','e','f']; 
 
\t 
 
console.log(recordsArray1.length); 
 
recordsArray1.splice('a', 1); 
 
console.log(recordsArray1); 
 

 
var recordsArray2 = ['g','h','i','j','k','l'].join('\n'); 
 
\t 
 
console.log(recordsArray2.length); 
 
recordsArray2.splice('g', 1); 
 
console.log(recordsArray2);

感謝您的幫助。

+0

當然,最好的方法是通過for循環生成可視化表示,並在其中應用所有格式。 –

回答

1

Array.prototype.join(separator)陣列轉換成由separator分隔的字符串。如果要使用換行符連接元素,請在任何其他數組操作(例如切片)之後執行連接。

+0

我將如何首先創建一個(垂直)數組項目列表,然後再刪除項目? –

+0

如果您想要,可以爲每個項目添加一個「\ n」,然後對其進行過濾。這可以通過像list.map(item => item +「\ n」)來完成。 –

+1

現實是,沒有像「數組項垂直列表」這樣的事情。數組項只是項目,在數組中,在內存中。我認爲你混淆了數組和數組本身的表示。 –

0

如果我正確地理解了您的需求,您可能想要映射到元素上並向每個元素添加換行符,而不是將數組連接到字符串。這應該這樣做:

recordsArray2 = ['g','h','i','j','k','l'] 
 
recordsArray2.map((x) => x + "\n")

0

首先,你的splice用法是不正確的。你的意圖似乎是「請,請刪除一個」,「請刪除一個g」。但這不是拼接的工作方式。第一個參數是索引開始,正確的用法是.splice(0, 1)(讀取:從索引0開始刪除一個元素)。

其次,連接使用提供的序列將數組轉換爲字符串。因此,['g','h','i','j','k','l'].join('\n');產生g\nh\ni\n...作爲字符串,它沒有join方法。所以,要刪除g,我建議在之後加入,否則你刪除了g:var arr =['g','h','i','j','k','l']; arr.splice(0, 1); arr = arr.join('\n');(或者不要加入它,因爲我認爲這不是你打算做的)。另一種方法是在加入後去除G,例如var arr =['g','h','i','j','k','l'].join('\n').substr(2)(它將返回從第三個字符開始的字符串,所以g和下列\ n將被刪除)。