Показать определенное количество элементов из массива в React JS

#reactjs

#reactjs

Вопрос:

У меня есть следующий код: мой код

Мне нужно проверить, превышает ли name.length сумма моих элементов больше 25, тогда отображаются только элементы, name.length сумма которых меньше 25. А также печатать count элементы, которые не отображаются.

Я пытаюсь что-то подобное, но я застрял, пожалуйста, помогите 🙂

     const skills = [
    {
      id: 1,
      name: "Html"
    },
    {
      id: 2,
      name: "css"
    },
    {
      id: 3,
      name: "bootstrap 4"
    },
    {
      id: 4,
      name: "scss"
    },
    {
      id: 5,
      name: "JS"
    },
    {
      id: 6,
      name: "React"
    },
    {
      id: 7,
      name: "Jquery"
    },
    {
      id: 8,
      name: "Vue JS"
     }
     ];
      return (
        <div>
          {skills.map((skill) => (
        <li key={skill.id}>{skill.name}</li>
      ))}
      {/* with this line I am wanting to show each elemet char count  */}
      {skills.map((skill) => (
        <div>{skill.name.length}</div>
      ))}
      {/* need to show hide elements count  */}
      <div> {count}</div>
    </div>
  );
 

В конце концов, мне нужно получить такой вид, как этот

  • HTML
  • css
  • bootstrap 4
  • scss
  • JS

3

Ответ №1:

Ну, вы можете подойти к этому как:

 let lengthCount = 0;
let maxIndex = 0;

skills.map((item, index)=>{
 if(lengthCount <= 25 ){
   maxIndex = index;
   console.log("item: " , item.name)
 }
  lengthCount = lengthCount   item.name.length;
})

console.log(" ",skills.length - maxIndex, " more");

 

Результат:

введите описание изображения здесь

Вот ссылка на codepen https://codepen.io/the_only_yasir/pen/dyOdZZR?editors=0010

Ответ №2:

Вы можете сделать это следующим образом.

  return (
    <div>
      {skills.map((skill) => {
        if (skill.name.length < 25) {
          return <li key={skill.id}>{skill.name}</li>;
        } else {
          countMoreThan25  ;
        }
      })}
       {countMoreThan25}
    </div>
  );
 

Вот код для справки.
https://codesandbox.io/s/jolly-newton-qjxpw?file=/src/App.js:549-799

Комментарии:

1. Разве он не хотел проверить общую сумму названий предметов, и если эта сумма меньше 25?

2. Глядя на результат, я подумал, что он хочет показать элементы, если их количество символов меньше 25, в противном случае он хочет показать как » {items} more», у которых количество символов больше 25.