Javascript 如何基于其他对象修改对象数组中的值
我的目标是:Javascript 如何基于其他对象修改对象数组中的值,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我的目标是: let sample = {cat: 10 , dog: 50 , snake: 25}; let petarray = [ {name: 'newcat' , quantity: 20}, {name: 'oldcat' , quantity: 15}, {name: 'razordog' , quantity: 10} ]; 我将对象数组设置为: let sample = {cat: 10 , dog: 50 , snake: 25}; let p
let sample = {cat: 10 , dog: 50 , snake: 25};
let petarray = [
{name: 'newcat' , quantity: 20},
{name: 'oldcat' , quantity: 15},
{name: 'razordog' , quantity: 10}
];
我将对象数组设置为:
let sample = {cat: 10 , dog: 50 , snake: 25};
let petarray = [
{name: 'newcat' , quantity: 20},
{name: 'oldcat' , quantity: 15},
{name: 'razordog' , quantity: 10}
];
我可以知道如何修改petarray的数量,以便如果petarray[allindexes].name包含任何样本,则数量=数量*样本的相应数量
对于eg:petarray[0]。名称包括cat,数量应修改为20*10
对于如何实现这一目标的任何帮助都非常感谢,TIA希望这是明确的
请让我知道更多的信息或我可以做些什么来改善这个结果
可以这样做-:
let sample = {cat: 10 , dog: 50 , snake: 25};
const sampleKeys = Object.keys(sample);
petarray = petarray.map(item =>
sampleKeys.find(key => item.name.includes(key))
? { ...item, quantity: item.quantity * sample[match] }
: item;
)
可以这样做-:
let sample = {cat: 10 , dog: 50 , snake: 25};
const sampleKeys = Object.keys(sample);
petarray = petarray.map(item =>
sampleKeys.find(key => item.name.includes(key))
? { ...item, quantity: item.quantity * sample[match] }
: item;
)
你可以试试这个
让样本={猫:10,狗:50,蛇:25};
让petarray=[{name:'newcat',数量:20},{name:'oldcat',数量:15},{name:'razordog',数量:10}];
让sampleArrayKeys=Object.keyssample
petarray=petarray.mapp=>{
const key=sampleArrayKeys.findsak=>p.name.includesak
如果关键{
p、 数量*=样品[钥匙]
}
返回p
}
console.logpetarray你可以试试这个
让样本={猫:10,狗:50,蛇:25};
让petarray=[{name:'newcat',数量:20},{name:'oldcat',数量:15},{name:'razordog',数量:10}];
让sampleArrayKeys=Object.keyssample
petarray=petarray.mapp=>{
const key=sampleArrayKeys.findsak=>p.name.includesak
如果关键{
p、 数量*=样品[钥匙]
}
返回p
}
控制台logpetarray
让样本={猫:10,狗:50,蛇:25};
让petarray=[{name:'newcat',数量:20},{name:'oldcat',数量:15},{name:'razordog',数量:10}];
petarray.forEachpet=>{
让sampleKey输入样本{
如果sample.hasOwnPropertysampleKey{
如果pet.name.includeSampleKey{
pet.quantity*=样本[样本编号];
}
}
}
},佩塔里
控制台logpetarray
让样本={猫:10,狗:50,蛇:25};
让petarray=[{name:'newcat',数量:20},{name:'oldcat',数量:15},{name:'razordog',数量:10}];
petarray.forEachpet=>{
让sampleKey输入样本{
如果sample.hasOwnPropertysampleKey{
如果pet.name.includeSampleKey{
pet.quantity*=样本[样本编号];
}
}
}
},佩塔里
console.logpetarray您可以创建映射,然后只映射此数组: 让样本={猫:10,狗:50,蛇:25}; 让petarray=[ {名称:'newcat',数量:20}, {名称:'oldcat',数量:15}, {名称:'razordog',数量:10} ]; const keys=Object.keysample; 常量映射=petarray.reducea,{name}=>{ a[名字]=a[名字]| |{}; 让sampleKey=keys.findk=>name.includesk; 如果采样键 [名称]=样本密钥; 返回a; }, {} petarray=petarray.map{name,quantity}=>{name, 数量:样本[映射[名称]]?数量*样本[映射[名称]]:数量};
console.logpetarray 您可以创建映射,然后只映射此数组: 让样本={猫:10,狗:50,蛇:25}; 让petarray=[ {名称:'newcat',数量:20}, {名称:'oldcat',数量:15}, {名称:'razordog',数量:10} ]; const keys=Object.keysample; 常量映射=petarray.reducea,{name}=>{ a[名字]=a[名字]| |{}; 让sampleKey=keys.findk=>name.includesk; 如果采样键 [名称]=样本密钥; 返回a; }, {} petarray=petarray.map{name,quantity}=>{name, 数量:样本[映射[名称]]?数量*样本[映射[名称]]:数量};
console.logpetarray;感谢解决方案伙伴,我遇到了一个奇怪的情况,示例={cat:10,dog:50,snake:25,venosnake:15}和名称:Africavenosnake,我可以知道如何仅与venosnake匹配而不与snake匹配很难定义这种情况,但您可以通过考虑具有最大长度的键的子串的值来尝试。在毒蛇和蛇的例子中,你可以看到AfricaVenosnake的毒蛇比蛇长。是的,伙计,好的观点:……我可以知道如何检查这个吗谢谢你的解决方案,伙计,我有一个奇怪的情况,样本={猫:10,狗:50,蛇:25,毒蛇:15}和名字:AfricaVenosnake,我可以知道如何仅与毒蛇匹配而不与蛇匹配很难定义这种情况,但您可以通过考虑具有最大长度的键的子串的值来进行尝试。在毒蛇和蛇的例子中,你可以看到AfricaVenosnake的毒蛇比蛇长。是的,伙计,好的观点:……我可以知道如何检查这个吗谢谢你的解决方案伙计:,我有一个奇怪的情况,样本={猫:10,狗:50,蛇:25,毒蛇:15}和名字:AfricaVenosnake,我可以知道如何只与毒蛇匹配而不与蛇匹配它将与密钥数组中的第一个出现匹配,如果我们需要它与毒蛇匹配,我们可以确保对象是这样的,毒蛇优先{猫:10,狗:50,毒蛇:,蛇:25};而不是像这样{猫:10,狗:50,蛇:25,毒蛇:};谢谢
作为建议,我会这样尝试:谢谢你的解决方案,伙计:,我有一个奇怪的情况,样本={cat:10,dog:50,snake:25,Venosnake:15}和名称:AfricaVenosnake,我可以知道如何只与Venosnake匹配而不与snakeIt匹配吗,如果我们需要它来匹配毒蛇,我们可以确保物体是这样的,毒蛇排在第一位{猫:10,狗:50,毒蛇:,蛇:25};而不是像这样{猫:10,狗:50,蛇:25,毒蛇:};谢谢你的建议,我会这样做: