我对JS很陌生,也是第一次来这里.

如何在array.reduce中返回对象?

例如:

const lowestLow = historialCandlesFloatData.reduce((lowestLow,currentDay) => {
        if(currentDay.l < lowestLow.l){
             return lowestLow = currentDay;
        }else return lowestLow;   
},);

这很好,但我还需要返回最低的对象索引.现在我知道你可以使用索引作为reduce的一部分,我可以控制台.记录最低低点是什么索引,但我不知道如何将其与低点一起作为对象返回?

我可以用一个forEach,它看起来很好,但这似乎不是最好的方法,我真的很想知道!

const findLow = ()=>{
    let currentDayLow = 2;
    let dataIndex = 0;
    let datavalue = 0;

        historialCandlesFloatData.forEach((day)=>{
            if(day.l < currentDayLow){
                currentDayLow = day.l;
                datavalue = dataIndex;   
            }
            dataIndex ++;   
        });
    return {
        lowestLow: currentDayLow,
        indexValue: datavalue,
    }
}

推荐答案

如果您希望从数组中获得任何其他/更多的值,则可以使用第二个参数reduce:累加器的initial值.在这种情况下,累加器将是当前"最佳"索引,因此累加器初始值可以为0.

注意:可以使用条件运算符而不是if else.

const lowestIdx = historialCandlesFloatData.reduce((lowestIdx, currentDay, i) => {
    return currentDay.l < historialCandlesFloatData[lowestIdx].l
             ? i
             : lowestIdx;   
}, 0); // Initial index

然后使用该索引可以检索相应的对象

const lowest = historialCandlesFloatData[lowestIdx];

Javascript相关问答推荐

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

如何访问Json返回的ASP.NET Core 6中的导航图像属性

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

使用GraphQL查询Uniswap的ETH价格

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

Next.js服务器端组件请求,如何发送我的cookie token?

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

基于产品ID更新条带产品图像的JavaScript命中错误

FileReader()不能处理Firefox和GiB文件

无法检索与Puppeteer的蒸汽游戏的Bundle 包价格

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

Pevent触发material 用户界面数据网格中的自动保存

将Singleton实例设置为未定义后的Angular 变量引用持久性行为

在传单的图像覆盖中重新着色特定 colored颜色 的所有像素

CSS网格使页面自动滚动

如何在preLoad()中自定义p5.js默认加载动画?

如何在预览中显示html+css与数据URL?

JS:inline date子串.