簡體   English   中英

如何使用 Javascript 在數組中拆分多個字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM