此问题与this other question有关。
对不起,我无法找到解决方案。我需要通过属性dataObject
将objetivo
在id
中给出的对象数组分组,其属性为:indicadores
,objetivo
,perspetiva
和var res = dataObject.reduce(function(res, currentValue) {
if ( res.indexOf(currentValue.objetivo) === -1 ) {
res.push(currentValue.objetivo);
}
return res;
}, []).map(function(objetivo) {
return {
objetivo: objetivo,
indicadores: dataObject.filter(function(_el) {
return _el.objetivo === objetivo;
}).map(function(_el) { return _el.indicador; }),
perspetiva: dataObject.perspetiva,
id: dataObject.id
}
});
console.log(res);
。
这是我的代码:
objetivo
哪个是按perspetiva
正确分组,但是id
和public void eat(String item){
//update the game's message with one of the following options:
//1:"you are not holding an item"
//2:"item is not edible"
//3:"Yum, that was a tasty item!"
if(items == null){
message = "You are not holidng anything.";
}
else{
for(Item i: items){
if(i.isEdible()){
message = "Yum, that was tasty!";
items.remove(i);
}
else{
message = "That is not edible.";
}
}
}
}
返回未定义。
如果这与其他问题重复,请感谢您的帮助和抱歉。
答案 0 :(得分:1)
您正在尝试访问dataObject.id
和.perspetiva
,但dataObject
是您的主阵列,并且没有这些字段。
在reduce
选出唯一objetiva
后,请返回并找到他们来自的项目:
.map(function(objetivo) {
var items = dataObject.filter(function(_el) {
return _el.objetivo === objetivo;
});
然后你可以找到所有indicador
,因为看起来id
和perspetiva
对于具有相同objetiva
的项目是一致的,你可以选择第一个。
return {
objetivo: objetivo,
indicadores: items.map(function(_el) { return _el.indicador; }),
perspetiva: items[0].perspetiva,
id: items[0].id
}