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);