Javascript 使用forEach替换字符串的一部分?

Javascript 使用forEach替换字符串的一部分?,javascript,Javascript,我的输入框ID标有前缀“add product-”,我想将“add product-”替换为零。所以我尝试使用data[field.id].replace(“addproduct-”,”)但它给了我一个错误:[error]TypeError:undefined不是一个对象(正在计算'data[field.id].replace') 这是我的密码: function addproduct(){ var datafeilds = Array.from(document.querySelec

我的输入框ID标有前缀“add product-”,我想将“add product-”替换为零。所以我尝试使用
data[field.id].replace(“addproduct-”,”)
但它给了我一个错误:
[error]TypeError:undefined不是一个对象(正在计算'data[field.id].replace')

这是我的密码:

function addproduct(){

    var datafeilds = Array.from(document.querySelectorAll("[id^='add-product-']"));
    var data = {};
    datafeilds.forEach(function(field){
        data[field.id].replace("add-product-", "");
        data[field.id] = field.value;
    });

    console.log(data);
}
输出为:

[Log] {add-product-name: "", add-product-overlay1: "", add-product-overlay2: "", add-product-wholesale_price: "", add-product-delivery_price: "", …}
我希望它是:

[Log] {name: "", overlay1: "", overlay2: "", wholesale_price: "", delivery_price: "", …}

您的数据对象为空,因此访问该对象上的field.id属性将返回undefined。因此,您得到了上述错误


关于前缀id,您可以通过使
document.queryselectoral(“输入[id^='prefixvalue'])
您的数据对象为空,因此访问其上的field.id属性将返回未定义。因此,您得到了上述错误


关于前缀id,您可以通过制作
document.queryselectoral(“输入[id^='prefixvalue'])
来实现,在再次添加到空obj之前,您可以使用
替换。另外,您不需要在
datafeilds
as中使用
Array.From
,默认情况下会返回数组中的所有
节点

运行下面的代码段,查看它是否正常工作,并将其全部替换

函数addproduct(){
var datafeilds=document.querySelectorAll(“[id^='add-product-']”)
变量数据={};
datafeilds.forEach(函数(字段){
//将所有添加产品替换为“”
var replace=field.id.replace(“添加产品-”,“”);
//推送到数据{}
数据[替换]=字段值
});
console.log(数据)
}
addproduct()

在再次添加到空obj之前,可以使用
替换
。另外,您不需要在
datafeilds
as中使用
Array.From
,默认情况下会返回数组中的所有
节点

运行下面的代码段,查看它是否正常工作,并将其全部替换

函数addproduct(){
var datafeilds=document.querySelectorAll(“[id^='add-product-']”)
变量数据={};
datafeilds.forEach(函数(字段){
//将所有添加产品替换为“”
var replace=field.id.replace(“添加产品-”,“”);
//推送到数据{}
数据[替换]=字段值
});
console.log(数据)
}
addproduct()


你能粘贴“datafeilds”的值吗?你的意思是
字段.id.replace(…)
而不是
数据[field.id]。replace(…)
我想是吧?@Bergi我两次都试过了。不工作,请注意,您可以粘贴“datafeilds”的值吗?您的意思是
field.id.replace(…)
而不是
data[field.id]。replace(…)
我想是吧?@Bergi我都试过了。不工作,请注意,那么我该怎么做呢?那么我该怎么做呢?您发布的代码片段不工作。。。正在显示1。否。。。这不是…:{“名称”:“覆盖1”:“覆盖2”:“批发价”:“交货价”:“}他们应该有“1”。不过,这些价值观并没有出现。@tony你能澄清一下你想要什么吗?这就是您所说的
我希望它是:
-这正是它在
控制台中显示的方式。log
“name”:“->”name:“1”您发布的代码片段不起作用。。。正在显示1。否。。。这不是…:{“名称”:“覆盖1”:“覆盖2”:“批发价”:“交货价”:“}他们应该有“1”。不过,这些价值观并没有出现。@tony你能澄清一下你想要什么吗?这就是您所说的
我希望它是:
-这正是它在
控制台中显示的方式。log
“name”:“->“name”:“1”