我有一个名为fruits对象的Fruit数组,它有一个status属性,每个fruit的状态需要汇总到fruit状态
以下是一个示例:
const fruits = [
{id: 'apple', status: 'good'},
{id: 'orange', status: 'inprogress'},
{id: 'kiwi', status: 'error'}
]
如果所有水果状态相同,则基于status属性,fruits.status =公共属性。
如果其中任何一个状态为错误,则水果状态为错误
如果只有好的和正在进行中,fruits.status正在进行中
我们怎样才能在es6中这样做?
我试过
function getFruitsStatus(fruitarray) {
const types = new Set(fruitarray.map(({status}) => status));
types.forEach(function(value) {
console.log(value);
});
}
答案 0 :(得分:1)
您可以使用set.has()
查看某个元素是否包含在您的集合中:
const fruits = [
{id: 'apple', status: 'good'},
{id: 'orange', status: 'inprogress'},
{id: 'kiwi', status: 'error'}
]
const goods = [{status: 'good'}]
const progress = [{status: 'good'}, {status: 'inprogress'}]
function getFruitsStatus(fruitarray) {
const types = new Set( fruitarray.map(({status}) => status) )
if (types.has('error')) throw new Error('Bad fruit')
if (types.has('inprogress')) return 'inprogress'
return 'good'
}
console.log(getFruitsStatus(goods))
console.log(getFruitsStatus(progress))
console.log(getFruitsStatus(fruits))

答案 1 :(得分:0)
我可能会这样做
function getFruitsStatus(fruitarray) {
return fruitarray.reduce((status, item) => {
if (status === 'error' || item.status ==='error') return 'error';
if (status === 'inprogress') return 'inprogress';
return item.status;
}, 'good');