亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript - 提取位于兩個特殊字符之間的字符串部分

Javascript - 提取位于兩個特殊字符之間的字符串部分

慕斯王 2023-10-20 16:55:08
我有這樣的字符串-countries=a,b&states=c,d&districts=e,f,g,hcountries=a,b我想提取字符串中位于字符之間的部分=,&并將結果作為數組返回。所以,在第一種情況下,結果應該是['a','b', 'c','d','e','f','g','h']。對于第二種情況,應該是['a','b']。我通過這樣做達到了結果-const extract = string.split('&');const splitArray = extract.map(x => x.split('=')[1]);const resultString = splitArray.join(',');const result = resultString.split(',');我能做得更簡潔、更好嗎?
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

使用URLSearchParams 的一個示例

let query = 'countries=a,b&states=c,d&districts=e,f,g,h';

let values = [];


(new URLSearchParams(query)).forEach(function(v) {?

? ? v.split(',').forEach(function(v){

? ? ? ? values.push(v);

? ? });

});


console.log(values); // ["a", "b", "c", "d", "e", "f", "g", "h"]

...但是如果“簡潔”你的意思是“一行”..那么這是我的看法:


let query = 'countries=a,b&states=c,d&districts=e,f,g,h';


query = query.replace(/(^|&).*?=/g,',').split(',').filter(Boolean);


console.log(query); // ["a", "b", "c", "d", "e", "f", "g", "h"]


查看完整回答
反對 回復 2023-10-20
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

const input = [

  'countries=a,b&states=c,d&districts=e,f,g,h',

  'countries=a,b'

];

input.forEach((line) => {

  let result = [].concat.apply([], line

    .split(/&/)

    .map((keyValue) => {

      return keyValue.replace(/^[^=]*=/, '').split(/,/)

    }));

  console.log(line + ' ==> ' + JSON.stringify(result));

});

輸出:

countries=a,b&states=c,d&districts=e,f,g,h ==> ["a","b","c","d","e","f","g","h"]
countries=a,b ==> ["a","b"]

解釋:

  • 分割以&獲取鍵/值對

  • 對于每個鍵/值:

    • 提取值

    • 將值分割為'

  • 將數組的結果展平為[].concat.apply([], arr)

或者,您可以初始化一個空數組[],并作為每個鍵/值的最后一步,對每個項目執行 forEach 操作,并將其推送到數組中。


查看完整回答
反對 回復 2023-10-20
  • 2 回答
  • 0 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號