Javascript 在对象数组中添加一个字段并更新另一个字段

Javascript 在对象数组中添加一个字段并更新另一个字段,javascript,arrays,node.js,Javascript,Arrays,Node.js,查询返回集合中的对象数组。我想向该数组中的每个对象添加一个字段,并更新该数组中每个对象中的另一个字段 更新前的产品阵列: [{ _id: 58d895b8ffc0346230a43a89, event: 'Junior Girls 12s', group: 'nonpro', price: 50, day: 'Friday' }, { _id: 59d895b8ffc0346230a43a89, event: 'Junior Girls 14s', group: 'no

查询返回集合中的对象数组。我想向该数组中的每个对象添加一个字段,并更新该数组中每个对象中的另一个字段

更新前的产品阵列:

[{ _id: 58d895b8ffc0346230a43a89,
  event: 'Junior Girls 12s',
  group: 'nonpro',
  price: 50,
  day: 'Friday' },
 { _id: 59d895b8ffc0346230a43a89,
  event: 'Junior Girls 14s',
  group: 'nonpro',
  price: 50,
  day: 'Friday', }]
更新对象数组的我的代码:

//add the field and changed price if late fee applies
for(var i = 0; i < products.length; i++) {
  products[i].field = registered.frifield;
  console.log(products[i].field);
  if(settings.latefeeamt > 0 && settings.frilatefee === true) { 
     products[i].price += settings.latefeeamt; 
  }
  console.log(products[i]);
  console.log(events.friday);
}

我怎样才能让它工作?它在循环中记录正确的字段,但完成后我会得到原始数组。

通常,不要更改正在迭代的数组,这是一种不好的做法

您可以使用
map


这应该会返回一个数组,里面会有更新的产品列表。您好,我不确定这部分代码,因为没有定义设置

if(settings.latefeeamt > 0 && settings.frilatefee === true) { 
  products[i].price += settings.latefeeamt; 
}
在这里你有一个代码,工作我改变的条件取决于一天,你可以更新它取决于你的规格,希望它有帮助

var products = [{
    _id: '58d895b8ffc0346230a43a89',
    event: 'Junior Girls 12s',
    group: 'nonpro',
    price: 50,
    day: 'Friday'
},
{
    _id: '58d895b8ffc0346230a43a89',
    event: 'Junior Girls 14s',
    group: 'nonpro',
    price: 50,
    day: 'moday',
}];
console.log(products);
for(product of products) {
    product.field = 'Main';
    if (product.day === 'moday') {
        product.price = 30;
    }
}
console.log(products);

还有其他相关对象可能会影响您的结果
设置
事件
设置位于我在代码中共享的设置之上,但设置为20和false,因此价格将保持不变。我遇到的问题是我无法设置字段!设置位于我在代码中共享的内容之上,但设置为20和false,因此价格将保持不变。我遇到的问题是我无法设置字段!在您的代码中,不会更新,因为您有一个&&运算符,根据您上面所说的,该运算符将两个表达式求值为true:(settings.latefeeam)20>0和(settings.latefeeamt)false==true。输入条件设置。latefeeamt应为true,希望它有帮助这对我也不起作用。如果I console.log element.field在分配后出现在行上,则正确显示字段名“Main”,但如果I console.log数组在末尾,则为未更改的数组。您是记录
数组还是
产品
?您能否在登录后提供屏幕截图?
if(settings.latefeeamt > 0 && settings.frilatefee === true) { 
  products[i].price += settings.latefeeamt; 
}
var products = [{
    _id: '58d895b8ffc0346230a43a89',
    event: 'Junior Girls 12s',
    group: 'nonpro',
    price: 50,
    day: 'Friday'
},
{
    _id: '58d895b8ffc0346230a43a89',
    event: 'Junior Girls 14s',
    group: 'nonpro',
    price: 50,
    day: 'moday',
}];
console.log(products);
for(product of products) {
    product.field = 'Main';
    if (product.day === 'moday') {
        product.price = 30;
    }
}
console.log(products);