Javascript 如何基于另一个值获取对象中的值

Javascript 如何基于另一个值获取对象中的值,javascript,for-loop,object,Javascript,For Loop,Object,我可能需要一些帮助,通过一个对象循环,并获得两种产品之间的价格差异。例如,大锤子和小锤子在价格上有什么区别 这是我到目前为止所拥有的 var myarray = [{product: "big hammer", price: 32},{product: "small hammer", price: 22},{product: "wrench", price: 15},{product: "saw", price: 5

我可能需要一些帮助,通过一个对象循环,并获得两种产品之间的价格差异。例如,大锤子和小锤子在价格上有什么区别

这是我到目前为止所拥有的

var myarray = [{product: "big hammer", price: 32},{product: "small hammer", price: 22},{product: "wrench", price: 15},{product: "saw", price: 55}];

getPriceDifference(myarray[0].product);


function getPriceDifference(currentProduct){

   if(currentProduct === "Big Hammer"){

     //do something...this is where I am stuck

   }



}

提前感谢。

在数组上迭代有多种方法

myarray.map(项=>{
})
myarray.foreach(项=>{
})
或者,如果您将数据的结构更改为以下内容,则不必进行迭代

var产品={
“大锤”:{价格:32},
“小锤子”{price:22},
“扳手”{price:15},
“saw”:{价格:55},
};
函数getPriceDifference(产品1、产品2){
返回Math.abs(products[product\u 1].price-products[product\u 2].price);
}
var差异=getPriceDifference(“大锤”、“小锤”);
控制台日志(差异);
这项工作:

var myarray=[{产品:“大锤”,价格:32},{产品:“小锤”,价格:22},{产品:“扳手”,价格:15},{产品:“锯”,价格:55}];
函数getPriceDifference(第一、第二){
对于(var i=0;ilog(getPriceDifference('small-hammer','big-hammer')
你可能应该让你的函数接受两个产品,然后返回差额,否则一个函数怎么知道与哪个价格进行比较?你的预期输出是多少?@pilchard这很有意义。那么,我如何获得这两种指定产品的价格?这就是我陷入困境的地方,产品名称和价格在同一个对象中。我是一个新手开发人员,所以一个没有代码的基本方向会很有帮助。@Prime预期的输出将是两个产品之间的价格差异。例如,大锤子和小锤子之间的差值为10美元,因此函数将返回10。我不确定确切的答案是什么。据我所知,函数应该得到两个对象之间的差值?然后在函数中,应该像其他产品一样添加一个参数。比如getPriceDifference(currentProduct,otherProduct)。希望你能为你找到答案。我发现有效的解决方案是你发布的关于改变对象结构的解决方案。一旦我这样做并传递了两个参数,我就能够得到正确的输出。谢谢。@user2828701:选择加入这样的数据模型“改进”是一个非常糟糕的主意-想象一下产品名称有100个字符长,这对于产品名称来说很正常,但是对于适当的对象属性名称来说太长了。另一个问题是,当您需要以不同的成本使用相同名称的项目时(例如,由于折扣),您可能会遇到无法实现的问题,因为对象键名称必须是唯一的。对你来说可能还不是这样,但这是一笔纯粹的技术债务,没有任何理由。@Yevgen Gorbunkov谢谢你的提示。我会考虑到这一点,看看我可以如何调整这一点solution@user2828701:“>…看看如何…调整”重点是你真的不应该。您最初的数据结构更加健壮(建议为每个项目添加唯一的
id
属性)。我宁愿坚持你在这篇文章中得到的两个备选方案中的任何一个。