【问题标题】:Iterate between two numbers with object.keys [duplicate]使用object.keys在两个数字之间迭代[重复]
【发布时间】:2021-01-22 10:44:59
【问题描述】:

我有一个在 object.keys 中迭代的对象列表,但是我怎样才能只在两个数字之间迭代(3-5)?并忽略列表的其余部分。

const obj = { 
    '#1 List title': [{
        title: 'First',
      },
    ],
    '#2 List title': [{
        title: 'Sec', 
      },
    ], 
    '#3 List title': [{
        title: 'Third',
      },
    ], 
    '#4 List title': [{
        title: 'Fourth',
      },
    ],    
    '#5 List title': [{
        title: 'Fifth',
      },
    ],    
  };

const listItem =  Object.keys(obj).map((key) => 
    <div key={key}>
      <div>{key}</div>
      <div>
        {obj[key].map(el =>
          {el.title}
        )}
      </div>
    </div>
  )

【问题讨论】:

标签: javascript reactjs ecmascript-6


【解决方案1】:

过滤器也可以让你到达那里:

const obj = { 
    '#1 List title': [{
        title: 'First',
      },
    ],
    '#2 List title': [{
        title: 'Sec', 
      },
    ], 
    '#3 List title': [{
        title: 'Third',
      },
    ], 
    '#4 List title': [{
        title: 'Fourth',
      },
    ],    
    '#5 List title': [{
        title: 'Fifth',
      },
    ],    
  };
  
  const start = 2;
  const end = 4;

const listItem =  Object.keys(obj).filter((_,i) => i >=start && i <=end).map((key) => `
    <div key=${key}>
      <div>${key}</div>
      <div>
        ${obj[key].map(el =>
          {el.title}
        )}
      </div>
    </div>
    `
  )
  
  console.log(listItem)

请注意数组索引从0开始,随意修改startend

【讨论】:

  • 这太可怕了。当slice 可用时,没有理由使用filter
  • 哇,这是一个苛刻的形容词。我并不是说这个解决方案更好,但至少看起来还有讨论的空间:medium.com/@justintulk/…
  • 好吧,如果这是您选择“重新发明轮子”的理由,那么我会在您的回答中反映这一点。目前它在没有给出任何理由的情况下过于复杂。
猜你喜欢
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2019-12-03
  • 2021-02-21
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
相关资源
最近更新 更多