從某個位置開始檢查字符串是否與給定的字符串匹配 javascript

節點人

var obj2 = [{
  "name": "4134",
  "calls": [

  ]
}]

    var obj3 = [{ Channel: 'SIP/4134-0004462a',
        State: 'Up',
        Accountcode: '7013658596'},
      { Channel: 'SIP/4334-sa',
        State: 'Up',
        Accountcode: '07717754702',
      }]


var channelArr = [];
const Channels = obj3.reduce((acc, curVal) => {
  obj2.forEach((item)=>{
    if(curVal.Channel.includes('SIP') &&  item.name == curVal.Channel.slice(4,8).toString()){
      item.calls.push({'MobileNo':curVal.Accountcode,'Status': curVal.State})
    }
  })
  return obj2;
}, [])

console.log(obj2);

上面代碼的輸出是

[
  {
    "name": "4134",
    "calls": [
      {
        "MobileNo": "7013658596",
        "Status": "Up"
      }
    ]
  }
]

我的代碼"name": "4134"取自 obj2 和Channel: 'SIP/4134-0004462aobj3。然後它'SIP/4134-0004462a'使用代碼檢查來自 obj2 的 4134 是否存在於來自 obj3 的值中curVal.Channel.includes('SIP') && item.name == curVal.Channel.slice(4,8).toString()如果然後該值存在它推動MobileNoAccountCode從該特定對象,並推入OBJ2的呼叫陣列。因為Channel: 'SIP/4134-0004462a在這裡是非常可預測的,好像值包含SIPslice(4,8)位置然後4134完美匹配。但是,如果不是4134我必須匹配一個值"name" : "4134556"怎麼辦?在這種情況下4134556'SIP/4134556-0004462a如果我使用,它將無法正常工作slice(4,8)在 obj3 上。我想要一個解決方案,它從 obj2 中獲取 name 鍵的值並從 obj3 中獲取 Channel 鍵的值,並檢查 obj2 中的值是否存在於從位置 4 開始的 Channel 值中(即在 SIP/ 之後)我不想要設置一個限制splice(4,8),而不是它應該是動態的,它可以匹配任何名稱的數字與從 Channel 值中的位置 4 開始的 Channel(期望像splice(start from 4th position and match the next digits for a match))。這將讓我完美匹配數字,即使它們有任意數量的數字。

我嘗試過的臨時解決方案:

if(curVal.Channel.includes('SIP') && curVal.Channel.includes(item.name))

但這給了我錯誤的結果Channel : SIP/3422-0413462afrom obj3 也將與name : 4134from obj2匹配,因為它在其他位置包含數字 4134 ,這不是所需的結果。

我該怎麼做才能使 obj2 的名稱與從第 4 個位置開始的 obj3 的 Channel 匹配,即之後SIP/並檢查是否匹配?

羅比·科內利森

您可以使用String.prototype.startsWith(searchString, position)

console.log('SIP/4134556-0004462a'.startsWith('4134556', 4)); // true

position參數允許指定要在大海撈針中搜索針的位置(在您的情況下 position 4)。

這可能會給您帶來另一個問題,因為這也將評估為真:

'SIP/4134556-0004462a'.startsWith('4134', 4); // true

如果這不是您想要的(即您希望值後跟-分隔符),則必須將分隔符添加到搜索字符串中:

'SIP/4134556-0004462a'.startsWith('4134' + '-', 4) // false

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript:搜索字符串时indexOf与Match是否匹配?

如何在JavaScript中检查字符串是否包含子字符串?

检查字符串中的重复字符Javascript

检查字符串中所有字符是否相等的函数javascript-作业警告

使用javascript检查字符串是否是数组中字符串的组合

检查字符串数组是否在javascript中包含子字符串

检查字符串是否是JavaScript中的模板文字

筛选匹配字符串的JavaScript字符串数组

检查字符串数组是否包含javascript中给定字符串的子字符串?

如何检查字符串是否包含字符JavaScript之间的空白字符?

如何在JavaScript中检查字符串中是否包含数字和特殊字符?

JavaScript检查字符串中是否包含字母

如何检查字符串字符是否在JavaScript数组中?

如何检查字符串在Javascript中是否仅包含特定的特殊字符集?

如何检查字符串是否有起始字符是特殊字符:javascript

Javascript检查字符串是否仅包含某些字符

在JavaScript中检查字符串是否为日期

Javascript:检查字符串以匹配模式

检查字符串是否在javascript中排序

如何检查字符串是否包含JavaScript代码?

如何检查字符串中的字符是否是JavaScript中的特定字符?

如何使用javascript检查字符串中是否存在带字符的新行?

检查字符串是否与 Javascript 中的自定义正则表达式匹配

javascript檢查字符串是否包含數組中的單詞並替換它們

檢查字符串是否與模式匹配

如何正確檢查字符串是否與javascript中的正則表達式匹配

檢查javascript對象的子對像是否包含某個字符串

用Javascript檢查一個字符串是否是一個等值線 - 邏輯審查

開發一個 JavaScript 來查找給定字符串“efg”第 3 次出現的位置 I/P:abcefgacefgabcceftyefghjklop O/p:20