首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从reactJS中的数组映射元素

从reactJS中的数组映射元素
EN

Stack Overflow用户
提问于 2021-02-27 18:21:37
回答 3查看 58关注 0票数 1

大家好,我有以下代码:my code

我有以下场景。我正在计算我所有技能名称的长度,如果长度大于25,我将隐藏所有其他技能,并在数量上显示有多少技能被隐藏。这一部分现在正在发挥作用。但是当我不能展示我看得见的技能时。你可以帮助我解决这个问题,并优化我的代码,如果你认为有什么问题。

谢谢。

这里是我的技能

代码语言:javascript
复制
    const skills = [
      {
        id: 1,
        name: "Html"
      },
      {
        id: 2,
        name: "css"
      },
 
   ... and so on
];

我的代码部分:

代码语言:javascript
复制
   let lengthCount = 0;
   let maxIndex = 0;
   const skill = [];

   const Skill = () => {
    skills.map((item, index) => {
      if (lengthCount <= 20) {
        maxIndex = index;
        skill.push(item.name); // I am adding items to my skill array
       }
     lengthCount = lengthCount + item.name.length;
    });

    // mapping items from skill array
    let mySkills = skill.map((perSkill) => (
      <span key={perSkill.id} className="element">
        {perSkill.name}
      </span>
     ));
    
    
    return (
      <div className="wrapper">
        <div>{mySkills}</div>+{skills.length - maxIndex - 1}
      </div>
    );
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-27 18:35:40

您将在skill数组中推送item.name。因此,数组将只包含名称,而不包含对象。所以打印perSkill,而不是perSkill.name。如果您希望skill是一个对象数组,则使用:

skill.push(item)

票数 1
EN

Stack Overflow用户

发布于 2021-02-27 18:35:48

您只需将{perSkill.name}更改为{perSkill},它就会正常工作

sandbox

票数 1
EN

Stack Overflow用户

发布于 2021-02-27 18:30:32

我使用reduce来循环你的技能,每一步我们更新对象{ total,list},如果总数+新名称长度> LIMIT_NUMBER,我们只是返回旧的。如果不是,我们将新项目附加到object.list并增加总数。

代码语言:javascript
复制
const LIMIT_NUMBER = 5
const skills = [
      {
        id: 1,
        name: "Html"
      },
      {
        id: 2,
        name: "css"
      }]
      
const newSkillList = skills.reduce((acc, curr) => {
   if (acc.total + curr.name.length > LIMIT_NUMBER){
      return acc
   } else{
      const total = acc.total + curr.name.length
      const list = [...acc.list, curr]
      return {list, total}
   }
},{list:[], total: 0})
console.log(newSkillList)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66397743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档