作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个对象,里面装满了鲑鱼。我想循环检查三文鱼是新鲜的还是冷冻的。如果冷冻,则不放入堆,如果新鲜,放入是堆。如果盎司小于 2 且大于 6,则不堆,如果匹配 2-6,则堆。
然后,对于 yes 堆,我想遍历这些键和值以找到最便宜的,并将其打印出来。
到目前为止,这是我所拥有的,但我似乎一直在循环遍历大对象以运行检查。
我该怎么做?
function findSalmon(salmonInStore){
var noPile,
yesPile;
var salmon = Object.keys(salmonInStore));
for(var key in salmonInStore){
if(salmonInStore.key.freshness !== 'fresh'){
noPile.push(salmonInStore.key);
} else {
yesPile.push(salmonInStore.key);
}
if(salmonInStore.key.ounces < 2 && salmonInStore.key.ounces > 6){
noPile.push(key);
}else {
yesPile.push(salmonInStore.key);
}
}
return yesPile;
}
var salmonInStore = {
salmon1 : {
ounces: 1,
freshness: 'frozen',
price: 16
},
salmon2 : {
ounces: 6,
freshness: 'fresh',
price: 10
},
salmon3 : {
ounces: 2,
freshness: 'frozen',
price: 20
},
salmon4 : {
ounces: 5,
freshness: 'fresh',
price: 1
},
salmon5 : {
ounces: 3,
freshness: 'frozen',
price: 12
}
}
findSalmon(salmonInStore);
最佳答案
首先我们可以按价格对鲑鱼列表进行排序。
const salmonList = Object.keys(salmonInStore)
.map(key => salmonInStore[key])
.sort((a,b) => {
if (a.price < b.price)
return -1;
if (a.price > b.price)
return 1;
return 0;
});
然后我们可以过滤掉是的鱼。
const yesPile = salmonList.filter((salmon) => {
return salmon.ounces >= 2 && salmon.ounces <= 6 && salmon.freshness === 'fresh';
});
yesPile[0] // cheapest fish
查看 fiddle 以获得工作示例。
关于javascript - 循环遍历JS对象返回value的匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47320746/
我是一名优秀的程序员,十分优秀!