Javascript get.replace()';s第二个参数作为返回JS对象的函数?

Javascript get.replace()';s第二个参数作为返回JS对象的函数?,javascript,jquery,Javascript,Jquery,我有这个密码 function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){ var lineItem = { id: p3 ? p3 : p5, type: p1 ? p1 : p4, dualCheck: p2 ? true : false }; console.log(lineItem); return lineItem; } var ite

我有这个密码

function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){
    var lineItem = {
        id: p3 ? p3 : p5,
        type: p1 ? p1 : p4,
        dualCheck: p2 ? true : false
    };
    console.log(lineItem);
    return lineItem;
}
var item = $(this).prop('id').replace(/(clItem[YNA]{1,})(DC)(\d{1,3})|(clItem[YNA]{1,})(\d{1,3})/g, itemFormatter);
console.log(item.id);
其目的是获取jQ对象的id并返回从该id创建的js对象。但是,itemFormatter()内部的日志会记录实际对象的数据,item变量下方的日志会返回
[object object]
如果只记录item,如果记录类似
item.id
的内容,则返回
undefined

如何让lineItem正确返回,或者按照预期返回数据


$(document).on('click','.clItemCB',function(){
函数项格式化程序(匹配、p1、p2、p3、p4、p5、偏移量、字符串){
变量行项={
id:p3?p3:p5,
类型:p1?p1:p4,
双重检查:p2?正确:错误
};
console.log(行项);
返回行项目;
}
var item=$(this.prop('id').replace(/(clItem[YNA]{1,3})(DC)(\d{1,3})|(clItem[YNA]{1,3})(\d{1,3})/g,itemFormatter);
控制台日志(项目);
});

点击我
这就是我提出的解决方案,不是试图从replace()返回一个对象,而是返回一个字符串,其中包含由连字符分隔的重新格式化信息,然后将split()链到变量声明。这会将字符串拆分为一个数组,允许索引访问信息。类似于我试图通过返回一个对象来实现的功能


$(document).on('click','.clItemCB',function(){
函数项格式化程序(匹配、p1、p2、p3、p4、p5、偏移量、字符串){
变量id=p3?p3:p5,
类型=p1?p1:p4,
dualCheck=p2?真:假;
//console.log(行项);
返回[id,type,dualCheck].join('-');
}
var item=$(this.prop('id').replace(/(clItem[YNA]{1,3})(DC)(\d{1,3})|(clItem[YNA]{1,3})(\d{1,3})/g,itemFormatter.split('-');
console.log(项[0]+“我是ID”)
console.log(项[1]+“我就是类型”)
console.log(项[2]+“我正在进行重复检查”);
});


点击我你所做的没有意义。传递给
.replace()
的函数回调的返回值应该是字符串,而不是对象,因为
.replace()
的行为是使用返回值替换匹配的内容(由正则表达式匹配)。您可以做什么(如果我理解目标,但我不确定我是否理解)将回调设置为在回调之外声明的变量的值。因为您将字符串存储到项中,所以它不是对
$(this)
的神奇引用,当您替换字符串时,它不会更新元素的属性。@Pointy我明白您的意思,我假设是因为replace()可以返回一个字符串,也可以返回一个对象。在重新浏览“我看它”之后,它清楚地表明它将只返回一个字符串,“这个方法不会更改它被调用的字符串对象。它只返回一个新字符串。”目标是将元素的ID转换为一个对象,以便以后可以更容易地引用它,有一堆自动生成的元素,这是一个混乱。谢谢你,谢谢你的帮助。
function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){
    var id = p3 ? p3 : p5,
      type = p1 ? p1 : p4,
      dualCheck = p2 ? true : false;
    // console.log(lineItem);
    return [id, type, dualCheck].join('-');
  }
  var item = $(this).prop('id').replace(/(clItem[YNA]{1,})(DC)(\d{1,3})|(clItem[YNA]{1,})(\d{1,3})/g, itemFormatter).split('-');
  console.log(item);