[英]How do I split multiple strings in an array with Javascript?
我有一個看起來像這樣的數組:
var myArray = [ "name1+data1" , "name2+data2" , "name3+data3", "name4+data4" ]
當用戶輸入name1
,我想打開一個警告框並顯示data1
,對於name2
它應該顯示data2
,依此類推。
為了做到這一點,我想知道如何在不使用多個數組的情況下拆分所有字符串? 當用戶輸入name1
時,如何僅顯示data1
? 我試過使用myArray.split("+")
但它不起作用。
您可以映射拆分的字符串並從鍵/值對中獲取一個對象。
var array = ['name1+data1', 'name2+data2', 'name3+data3', 'name4+data4'], object = Object.fromEntries(array.map(s => s.split('+'))); console.log(object);
您可以嘗試實現以下帶有兩個參數的函數。 targetArray 是要執行搜索的數組,searchString 是要搜索的字符串。 在您的情況下, searchString 將是name1
。 時間復雜度基於元素在數組 O(K) 中的位置。
function findMatch(targetArray, searchString) {
const targetElement = targetArray.find(item => {
const leftSplit = item.split('+')[0];
return leftSplit === searchString;
});
if (targetElement) {
return targetElement.split('+')[1];
} else {
return null;
}
}
window.alert(
findMatch([ "name1+data1" , "name2+data2" , "name3+data3", "name4+data4" ], 'name2')
);
Alerts: "data2"
如果是數組,則需要遍歷數組。
const output = myArray.filter(arrayItem => arrayItem.includes(userInput))[0].split('+')[0];
這里的時間復雜度為 O(N+M),其中 N 是數組的長度,M 是字符串的長度。
我認為如果將myArray
作為字典維護會更好,
const myArray = {
name1: 'data1',
name2: 'data2',
name3: 'data3'
}
const output = myArray[userInput];
時間復雜度將降低到 O(1)
你可以使用這個片段
var myArray = [ "name1+data1" , "name2+data2" , "name3+data3", "name4+data4" ];
var userValue = prompt('Valeur à rechercher...');
myArray.map((item) => {
if(~item.search(userValue) && userValue.length > 0){
alert(item.split('+')[1]);
return false;
}
})
所以,這里有一個例子,其中 name1 和 name2 有值,但沒有其他值:
let pairs = [ "name1+data1" , "name2+data2" , "name3+", "name4+" ]
我們可以將其中的每一個拆分為兩個元素的數組:
let arr = pairs.map(p=>p.split('+'))
並過濾掉名稱為空的那些:
arr = arr.filter(a=>a[1].length > 0)
arr.join("\n") // "name1,data1
// name2,data2"
這樣做你想要的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.