2016-04-24 58 views
0

代碼:獨立的匹配值由連字符

var finArr = []; 
data.forEach(function (line) { 
    if (line.toString().indexOf(text) !== -1){ 
     finArr= finArr.concat(line); 
     //console.log(finArr) 
    } 
}) 

控制檯:

[ 
"59191", "TypeAV - Canada", "Available", 
"422129", "TypeAA - Italy", "Available", 
"959191", "TypeBB - USA", "N/A", 
"6D968C", "TypeAV - Canada", "Available" 
] 

我的問題是,我該如何在每個第二值的連字符(-)後取出一部分?

預期的結果是

[ 
"59191", "TypeAV", "Available", 
"422129", "TypeAA", "Available", 
"959191", "TypeBB", "N/A", 
"6D968C", "TypeAV", "Available" 
] 

回答

1

你最好的賭注是map在嵌套數組和只返回一個分裂的第一要素「 - 」。

var finArr = []; 
data.forEach(function (line) { 
    finArr = finArr.concat(line.map(function (el) { 
    return el.split(' - ')[0]; 
    })); 
}); 

DEMO

您還可以reduce取代forEach

var finArr = data.reduce(function (p, c) { 
    return p.concat(c.map(function (el) { 
    return el.split(' - ')[0]; 
    })); 
}, []); 

DEMO

0

使用split()功能,並採取了上半場。

element.split(" - ")[0]; 

"One thing - two things".split[" - "][0]; // "One thing" 
+0

謝謝你。我知道'split(「 - 」)[0]'就是這樣。但我怎麼做'finArr.concat(line);'? +10 – Becky

+0

是'line'只是一個字符串?如果是這樣,然後用逗號分割該字符串 - 'var splittedLine = line.split [「,」]'。然後concat splittedLine [0],splittedLine [1] .split(「 - 」)[0]和splitedLine [2] –

+1

「'一件事 - 兩件事」.split [0]'是「一件事」是錯誤的。 – Andy

0

如果有一個數組,可以迭代,結果改變爲分割的第一個元素。

var array = [["59191", "TypeAV - Canada", "Available"], ["422129", "TypeAA - Italy", "Available"], ["959191", "TypeBB - USA", "N/A"], ["6D968C", "TypeAV - Canada", "Available"]]; 
 
array = array.reduce(function (r, a) { 
 
    a.forEach(function (b) { 
 
     r.push(b.split(' - ')[0]); 
 
    }); 
 
    return r; 
 
}, []); 
 

 
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

+1

尼娜,看看預期的輸出。 – Andy

+0

@andy,謝謝,我想,我錯過了一些東西:)請參閱編輯。 –

1

試試這個

var data = [["59191","TypeAV - Canada","Available"],["422129","TypeAA - Canada","Available"]], result = []; 
 

 
data.forEach(function(a) { 
 
    a.map(function(b) { 
 
    b.includes('-') ? result.push(b.split(' - ')[0]) : result.push(b); 
 
    }); 
 
}); 
 

 
console.log(result);

+0

謝謝。 RUN CODE不顯示結果。這是爲什麼? – Becky

+1

檢查您的控制檯。 –

1

你應該改變的line[1]使用line[1] = line[1].split('-')[0]淡水河谷在forEach像以下。

var data = [["59191", "TypeAV - Canada", "Available"], ["422129", "TypeAA - Canada", "Available"]]; 
var finArr = []; 
data.forEach(function (line) { 
    if (line.toString().indexOf('-') !== -1) { 
     line[1] = line[1].split('-')[0].trim(); 
     finArr = finArr.concat(line); 
    } 
}) 
console.log(finArr) 
0

另一種方法是使用正則表達式完成這個任務

看到您的JSON數據好像只有第二個值將有一個連字符。所以使用正則表達式,你可以刪除下面的字符串- xyz IKE ..

data = JSON.parse(JSON.stringify(data).replace(/-\w+/g,""));

現在你已經刪除不需要的文本,按照此與您現有的循環邏輯,你必須得到所需的輸出。