我有話如列表:拆分列表爲兩個數組
ventana - window
puerta - door
silla - chair
現在,我需要把這個分成兩個數組:
var words = ['ventana','puerta','silla'];
var defs = ['window','door','chair'];
我想我可以在換行符處拆分字符串,然後採用新的數組並在每個' - '處進行拆分。但我不確定如何做到這一點。有人能幫我嗎?謝謝。
我有話如列表:拆分列表爲兩個數組
ventana - window
puerta - door
silla - chair
現在,我需要把這個分成兩個數組:
var words = ['ventana','puerta','silla'];
var defs = ['window','door','chair'];
我想我可以在換行符處拆分字符串,然後採用新的數組並在每個' - '處進行拆分。但我不確定如何做到這一點。有人能幫我嗎?謝謝。
「我想我可以在換行符的字符串分割,然後利用新的陣列和拆分,在每一個‘ - ’」
是的,那如果你工作得很好,意思是「採取新陣列並拆分」其中的每個項目。假設你開始用這三個詞作爲一個字符串:
var list = 'ventana - window\npuerta - door\nsilla - chair';
然後進行如下操作:
var pairs = list.split('\n'),
words = [],
defs = [],
i, tmp;
for (i = 0; i < pairs.length; i++) {
tmp = pairs[i].split(' - ');
words.push(tmp[0]);
defs.push(tmp[1]);
}
注意,此代碼沒有錯誤檢查,以確保每一個換行符之間的子竟確實有一對由' - '
分開的單詞,但我會將它作爲一個練習...
不錯,簡短並且重要。 +1。 –
哇...你快! – opalenzuela
var stringYouHave = "ventana - window puerta - door silla - chair";
function getKVPairs(str){
var a = str.split(" ");
return a;
}
var kvPairs = getKVPairs(stringYouHave);
var defs= new Array();
var words = new Array();
for(var i = 0 ; i < kvPairs.length;i++){
var a = kvPairs[i].split("-");
words.push(a[0]);
defs.push(a[1]);
}
console.log(words);
console.log(defs);
這是你如何做到的。
這不會像你所期望的那樣工作 – Joshua
顯而易見的算法會將字符串拆分爲新行並對每行進行迭代,並使用分隔符重新分割字符。
然而,它的一個更優化的版本可以是(假設該輸入值是公格式):
var dic = str.split(/[\n\-]/);
var pos = 0;
for (var i = 0; i < dic.length; i++) {
words[pos] = dic[i];
dic[pos] = defs[++i];
}
一個單迴路,一個單個呼叫到「分裂」,沒有遞歸和無濫用的函數調用。
注:我沒有嘗試過的代碼,只是一個概念。儘管如此,問題應該提供你到目前爲止嘗試過的東西。
+1。我喜歡這個概念。儘管我認爲'/ \ n | - /'是你需要的正則表達式。 (我不太喜歡你在循環內改變循環計數器 - 對於for循環,我更喜歡在每次迭代後使用'defs [i + 1]'和'i + = 2')。但是,由於我說,+1。 – nnnnnn
那麼,我們其實並沒有宣佈真正的字符串,但我相信你是對的。 – opalenzuela
在現代瀏覽器中,你可以使用的方法類似reduce:
// assuming `s` is the string
var dict = s.split(/\n/)
.reduce(function(dict, item) {
var terms = item.split(/ - /);
dict.words.push(terms[0]);
dict.defs.push(terms[1]);
return dict;
}, {words:[], defs:[]});
您可以發佈您的代碼那麼遠?什麼地方出了錯? – elclanrs
注意:要將一段代碼縮進四格,或者選擇相關的塊並單擊編輯窗口上方的「{}」按鈕。只能使用''代碼,你想要顯示在一個句子'這樣'內聯。 – nnnnnn
你已經知道了邏輯。所有你需要的是一些代碼。爲什麼不嘗試一些開始,我們會從那裏幫助你 – MarsOne