Javascript for循环中的reduce方法-JS

Javascript for循环中的reduce方法-JS,javascript,reduce,Javascript,Reduce,我尝试使用for循环遍历条目数组,并使用reduce方法,但是reduce在第一个条目之后返回,永远不会到达第二个、第三个等条目以将结果推送到数组v 有什么想法吗 export const groupEventData = eventData => { console.log(eventData) // returns[{ // "id": "141", // "name": &qu

我尝试使用for循环遍历条目数组,并使用reduce方法,但是reduce在第一个条目之后返回,永远不会到达第二个、第三个等条目以将结果推送到数组v

有什么想法吗

export const groupEventData = eventData => {
    console.log(eventData)
    // returns[{
    //     "id": "141",
    //     "name": "00333",
    //     "no_transmission": true,
    //     "low_battery" :true,
    // },
    // {
    //     "id": "307",
    //     "name": "01163",
    //     "no_transmission": true,
    //     "low_data_rate": true,
    // }
    // ]

    // now let's group similar event types
    let v = [];
    let types = ["no_transmission", "low_data_rate", "low_battery"]; 
    for (let x = 0; x <= types.length; x++) {
        let data = eventData.reduce((acc, i) => {
            if (!acc[i[types[x]]] && typeof i[types[x]] !== 'undefined') {
                acc[i[types[x]]] = [i]
            }
            else if (Array.isArray(acc[i[types[x]]])) {
                acc[i[types[x]]].push(i);
            }
            else if (typeof acc[i[types[x]]] === 'object') {
                acc[i[types[x]]] = [acc[i[types[x]]]]
                acc[i[types[x]]].push(i)
            }
            return acc;
        }, {});
        // Doesn't add a property for the type if there are no data
        Object.keys(data).length && v.push({ [types[x]: data });
        return v;
    };

}
export const groupEventData=eventData=>{
console.log(eventData)
//返回[{
//“id”:“141”,
//“名称”:“00333”,
//“无传输”:正确,
//“低电量”:正确,
// },
// {
//“id”:“307”,
//“名称”:“01163”,
//“无传输”:正确,
//“低数据率”:正确,
// }
// ]
//现在让我们将类似的事件类型分组
设v=[];
let type=[“无传输”、“低数据速率”、“低电池”];
对于(设x=0;x{
如果(!acc[i[types[x]]]&&typeof i[types[x]]!='undefined'){
acc[i[类型[x]]]=[i]
}
else if(Array.isArray(acc[i[types[x]]])){
acc[i[类型[x]]].推送(i);
}
else if(acc的类型[i[types[x]]]=='object'){
acc[i[类型[x]]]=[acc[i[类型[x]]]]
acc[i[类型[x]]].推送(i)
}
返回acc;
}, {});
//如果没有数据,则不为类型添加属性
Object.keys(data.length&&v.push({[types[x]:data});
返回v;
};
}

您的for循环中有
return v
。请尝试将其撞到紧靠其下方的花括号下方。现在for循环仅迭代一次,然后返回一个值

在下面为我工作:

const eventData = [
  {"id": "141","name": "00333","no_transmission": true,"low_battery": true},
  {"id": "307","name": "01163","no_transmission": true,"low_data_rate": true}
]

const type = 'bc'

const types = ["no_transmission", "low_data_rate", "low_battery"]

const groupEventData = (eventData, type) => {
  let v = [];
  for (let x = 0; x <= types.length; x++) {
    let data = eventData.reduce((acc, i) => {
      if (!acc[i[types[x]]] && typeof i[types[x]] !== 'undefined') {
        acc[i[types[x]]] = [i]
      }
      else if (Array.isArray(acc[i[types[x]]])) {
        acc[i[types[x]]].push(i);
      }
      else if (typeof acc[i[types[x]]] === 'object') {
        acc[i[types[x]]] = [acc[i[types[x]]]]
        acc[i[types[x]]].push(i)
      }
      return acc;
    }, {});
    Object.keys(data).length && v.push({ [`${types[x]}_${type}`]: data });
  };
  return v;
}

console.log('groupEventData', groupEventData(eventData, type))
const eventData=[
{“id”:“141”,“name”:“00333”,“无传输”:true,“低电量”:true},
{“id”:“307”,“name”:“01163”,“无传输”:true,“低数据率”:true}
]
常量类型='bc'
常量类型=[“无传输”、“低数据速率”、“低电池”]
const groupEventData=(eventData,type)=>{
设v=[];
对于(设x=0;x{
如果(!acc[i[types[x]]]&&typeof i[types[x]]!='undefined'){
acc[i[类型[x]]]=[i]
}
else if(Array.isArray(acc[i[types[x]]])){
acc[i[类型[x]]].推送(i);
}
else if(acc的类型[i[types[x]]]=='object'){
acc[i[类型[x]]]=[acc[i[类型[x]]]]
acc[i[类型[x]]].推送(i)
}
返回acc;
}, {});
Object.keys(data.length&&v.push({[`${types[x]}}{${type}}]:data});
};
返回v;
}
log('groupEventData',groupEventData(eventData,类型))

你能把你的输入显示为一个吗?这给你的想象留下了太多的余地(
类型
类型
事件数据
,实际/预期输出)。谢谢。更重要的是,
getEventTypes()
-这可能是一个同步吗?谢谢,澄清了谢谢,但它仍然是不必要的抽象。应该很容易将其转换为一个具有明确硬编码的输入/输出数据结构的表单,可以作为一个执行。您试图在这里实现什么输出(明确/逐字显示)?此外,这似乎与React无关,因此如果这不重要,我建议删除标记。谢谢。我不这么认为,我想做的只是能够将reduce函数的循环次数作为类型数组的长度(在上述情况下,是3倍)但是它在完成第一个条目后返回..有意义,因为有返回acc。我要问的是如何循环reduce函数n次并存储在v数组中