簡體   English   中英

JavaScript調用帶有正則表達式匹配數字的函數(int)會導致錯誤

[英]JavaScript calling function(int) with a regex match for numbers causes errors

我正在使用Node.js用電子制作應用程序。 在我的代碼中,我有這樣的東西:

var id = element.match(/(-?\d+)/g);

其中element是一個類似於以下結構的字符串:

The id of this string is 100, ...

我有一個包含稱為項目的對象的數組:

var items = [];

預先填充數組。 每個項目都有一個名為getId()的函數,該函數返回其ID,該ID也是一個數字:

exports.getId = function() {
    return id;
};

該程序應該將id傳遞給另一個函數:

function getItemById(id) {
    for (var item in items) {
        if (items[item].getId() === id) {
            return items[item];
        }
    }

    return null;
}

但是,當我嘗試將getItemById(id)與字符串匹配的ID一起使用時,出現以下錯誤:

Uncaught TypeError: items[item].getId is not a function

這很奇怪,因為當我嘗試執行以下操作之一時,我沒有收到任何錯誤,並且程序按預期運行:

var item = getItemById(100);
var item = getItemById(parseInt("100"));

我需要從字符串中獲取ID作為一個數字,並將其傳遞給getItemById(id)函數。

match函數返回與正則表達式匹配的字符串數組。 假設輸入字符串僅包含一個數字,則應從結果中獲取第一個元素。

var element = 'The id of this string is 100, ...';
var id = element.match(/(-?\d+)/g)[0];

編輯:您得到的錯誤可能是由於items[item]不是您期望的類型,因此不存在名為getId函數。 檢查如何填充items數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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