Javascript - 如何让filter()返回匹配结果

标签 javascript node.js

我需要将match的结果返回给filter。我尝试了 forEach,但由于某种我似乎无法解决的原因,它导致我的脚本崩溃而没有错误。如果在 filter 中记录 element.match(/regex/)[1] 它会记录我想要的输出。然而,当我返回它时,它返回整个字符串(不仅仅是匹配项)。代码如下:

let myAr = ['{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"100000077777226","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AauUajLpeWuhLBG3jk4ypnhABBcEcbN4M8Z2F6J_CQaQXEhPwL-3j1_dX5vhAleK3K7rjlzqJwnG4xGGaGdFk7Eb","coeff2_action":"1","coeff2_pv_signature":"1509941759"}',
        '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"711427743","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasHfdsp_Gkdbs3_B4K-_5cN8Y0ZqJPVdm4MYXBzUoXs5QyNoPir8LEYK_RsMpQMxwI","coeff2_action":"1","coeff2_pv_signature":"1509941759"}',
        '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"500890765","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasBuRKr2vnMecj6ozdELAcZnUPL1FD3ojLSVrYrTckKy_pB2HekM693oJwKD0yH41Y","coeff2_action":"1","coeff2_pv_signature":"1509941759"}',
        ];

let resultAr = myAr.filter(function(element) {
        if (element != '#' && element != null) {
            console.log( element.match(/eng_tid":"(\d*)",/)[1]); // this logs what I want
            return element.match(/eng_tid":"(\d*)",/)[1]; // this doesn't return what I want
        } else {
            return false;
        }
    });
console.log(resultAr);

如何返回第一个控制台记录器中的输出?

最佳答案

您应该使用“ map ”,而不是“过滤器”。

let myAr = ['{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"100000077777226","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AauUajLpeWuhLBG3jk4ypnhABBcEcbN4M8Z2F6J_CQaQXEhPwL-3j1_dX5vhAleK3K7rjlzqJwnG4xGGaGdFk7Eb","coeff2_action":"1","coeff2_pv_signature":"1509941759"}',
    '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"711427743","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasHfdsp_Gkdbs3_B4K-_5cN8Y0ZqJPVdm4MYXBzUoXs5QyNoPir8LEYK_RsMpQMxwI","coeff2_action":"1","coeff2_pv_signature":"1509941759"}',
    '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"500890765","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasBuRKr2vnMecj6ozdELAcZnUPL1FD3ojLSVrYrTckKy_pB2HekM693oJwKD0yH41Y","coeff2_action":"1","coeff2_pv_signature":"1509941759"}',
    ];

let resultAr = myAr.map(function(element) {
    if (element != '#' && element != null) {
        return element.match(/eng_tid":"(\d*)",/)[1];
    } else {
        return false;
    }
});
console.log(resultAr);

关于Javascript - 如何让filter()返回匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46534470/

相关文章:

javascript - NodeJS 异步库不会异步发送请求

node.js - 如何通过 Facebook Marketing API 更新广告集(嵌套)定位选项?

javascript - 在 iframe.src 和 iframe.contentwindow.location 之间进行选择的函数

javascript - 比较循环中的数组 - javascript

javascript - express - 末尾可选斜杠

javascript - 从前端编辑用户信息

node.js - 使用 cy.task 动态创建测试

javascript - 使用 JavaScript 弹出窗口

javascript - 选择具有其他类名称的附近表行并切换类

javascript - 使用 Yeoman 的 angular-fullstack 在 Angular MEAN 堆栈中使用 Node Mailer 和 Sendgrid 发送电子邮件