Можно ли перебирать массив, исключая первый элемент? - PullRequest
2 голосов
/ 17 апреля 2019

Можно ли выполнить итерацию по массиву, исключая первый элемент (пропустите первый объект в массиве)?

КОД:

 let multipleDemo =[];

 let people = [
    { name: 'Adam',      email: 'adam@email.com',      age: 12, 
country: 'United States' },
    { name: 'Amalie',    email: 'amalie@email.com',    age: 12, 
country: 'Argentina' },
    { name: 'Estefanía', email: 'estefania@email.com', age: 21, 
country: 'Argentina' },
    { name: 'Adrian',    email: 'adrian@email.com',    age: 21, 
country: 'Ecuador' },
    { name: 'Wladimir',  email: 'wladimir@email.com',  age: 30, 
country: 'Ecuador' },
    { name: 'Samantha',  email: 'samantha@email.com',  age: 30, 
country: 'United States' },
    { name: 'Nicole',    email: 'nicole@email.com',    age: 43, 
country: 'Colombia' },
    { name: 'Natasha',   email: 'natasha@email.com',   age: 54, 
country: 'Ecuador' },
   { name: 'Michael',   email: 'michael@email.com',   age: 15, 
country: 'Colombia' },
   { name: 'Nicolás',   email: 'nicolas@email.com',    age: 43, 
country: 'Colombia' }
  ];

for(var i =0; i < people.length; i++) {
     multipleDemo.push(people[i]);
     people.splice(people[i], 1000);
     console.log(multipleDemo);
     console.log(people);
}

Пример кода: https://plnkr.co/edit/UJfRUs6dAT1NC1EnOvqA?p=preview

Я хочу оставить {имя: 'Адам', адрес электронной почты: 'adam@email.com', возраст: 12, страна: 'США'} в множестве людей. Остальные элементы, которые я хочу поместить в массив multipleDemo

Я хочу такой как FINISH EFFECT:

 let multipleDemo =[,
    { name: 'Amalie',    email: 'amalie@email.com',    age: 12, 
country: 'Argentina' },
    { name: 'Estefanía', email: 'estefania@email.com', age: 21, 
country: 'Argentina' },
    { name: 'Adrian',    email: 'adrian@email.com',    age: 21, 
country: 'Ecuador' },
    { name: 'Wladimir',  email: 'wladimir@email.com',  age: 30, 
country: 'Ecuador' },
    { name: 'Samantha',  email: 'samantha@email.com',  age: 30, 
country: 'United States' },
    { name: 'Nicole',    email: 'nicole@email.com',    age: 43, 
country: 'Colombia' },
    { name: 'Natasha',   email: 'natasha@email.com',   age: 54, 
country: 'Ecuador' },
   { name: 'Michael',   email: 'michael@email.com',   age: 15, 
country: 'Colombia' },
   { name: 'Nicolás',   email: 'nicolas@email.com',    age: 43, 
country: 'Colombia' }];

 let people = [
    { name: 'Adam',      email: 'adam@email.com',      age: 12, 
country: 'United States' }
  ];

Ответы [ 5 ]

3 голосов
/ 17 апреля 2019

Вы можете использовать Array.prototype.slice() для изменения ваших массивов, чтобы получить желаемый результат.

let people = [{
    name: 'Adam',
    email: 'adam@email.com',
    age: 12,
    country: 'United States'
  },
  {
    name: 'Amalie',
    email: 'amalie@email.com',
    age: 12,
    country: 'Argentina'
  },
  {
    name: 'Estefanía',
    email: 'estefania@email.com',
    age: 21,
    country: 'Argentina'
  },
  {
    name: 'Adrian',
    email: 'adrian@email.com',
    age: 21,
    country: 'Ecuador'
  },
  {
    name: 'Wladimir',
    email: 'wladimir@email.com',
    age: 30,
    country: 'Ecuador'
  },
  {
    name: 'Samantha',
    email: 'samantha@email.com',
    age: 30,
    country: 'United States'
  },
  {
    name: 'Nicole',
    email: 'nicole@email.com',
    age: 43,
    country: 'Colombia'
  },
  {
    name: 'Natasha',
    email: 'natasha@email.com',
    age: 54,
    country: 'Ecuador'
  },
  {
    name: 'Michael',
    email: 'michael@email.com',
    age: 15,
    country: 'Colombia'
  },
  {
    name: 'Nicolás',
    email: 'nicolas@email.com',
    age: 43,
    country: 'Colombia'
  }
];

let multipleDemo = people.slice(1); 
people = people.slice(0, 1);
console.log(multipleDemo);
console.log('--------------------');
console.log(people);
1 голос
/ 17 апреля 2019

Вы можете использовать Разрушение массива , чтобы распаковать и присвоить оставшуюся часть массива переменной, используя шаблон rest, и использовать .forEach() для их итерации следующим образом:

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const [first, ...rest] = arr;

rest.forEach(v => console.log(v));
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 17 апреля 2019

Поскольку вы просто хотите скопировать элементы из массива people в массив multipleDemo, исключая первый элемент, вы можете использовать метод массива slice ().

multipleDemo = people.slice(1)

.slice(1) скопирует содержимое массива people из index1 без ссылки на массив multipleDemo.
.slice () в MDN

0 голосов
/ 17 апреля 2019

Вы можете использовать .slice(), чтобы пропустить n элементов с самого начала.

Array.slice(1) означает, что вы берете массив, начиная с индекса 1 доконец.

Вы также можете определить, до какого элемента вы хотите вырезать.

Array.slice(1, 3) будет разделять элементы индекса 1 и 2.В этом случае это будут Амалия и Эстефания.

let people = [
  { name: "Adam", email: "adam@email.com", age: 12, country: "United States" },
  { name: "Amalie", email: "amalie@email.com", age: 12, country: "Argentina" },
  { name: "Estefanía", email: "estefania@email.com", age: 21, country: "Argentina" },
  { name: "Adrian", email: "adrian@email.com", age: 21, country: "Ecuador" },
  { name: "Wladimir", email: "wladimir@email.com", age: 30, country: "Ecuador" },
  { name: "Samantha", email: "samantha@email.com", age: 30, country: "United States" },
  { name: "Nicole", email: "nicole@email.com", age: 43, country: "Colombia" },
  { name: "Natasha", email: "natasha@email.com", age: 54, country: "Ecuador" },
  { name: "Michael", email: "michael@email.com", age: 15, country: "Colombia" },
  { name: "Nicolás", email: "nicolas@email.com", age: 43, country: "Colombia" }
];

let multipleDemo = people.slice(1);

multipleDemo.forEach(function (current) {
  console.log(current.name);
});
0 голосов
/ 17 апреля 2019

Есть много способов достичь этого. но самым простым и кратким решением было бы использование filter(). Который возвращает массив, который содержит каждый элемент, где выполняется условие.

 let people = [
    { name: 'Adam',      email: 'adam@email.com',      age: 12, 
country: 'United States' },
    { name: 'Amalie',    email: 'amalie@email.com',    age: 12, 
country: 'Argentina' },
    { name: 'Estefanía', email: 'estefania@email.com', age: 21, 
country: 'Argentina' },
    { name: 'Adrian',    email: 'adrian@email.com',    age: 21, 
country: 'Ecuador' },
    { name: 'Wladimir',  email: 'wladimir@email.com',  age: 30, 
country: 'Ecuador' },
    { name: 'Samantha',  email: 'samantha@email.com',  age: 30, 
country: 'United States' },
    { name: 'Nicole',    email: 'nicole@email.com',    age: 43, 
country: 'Colombia' },
    { name: 'Natasha',   email: 'natasha@email.com',   age: 54, 
country: 'Ecuador' },
   { name: 'Michael',   email: 'michael@email.com',   age: 15, 
country: 'Colombia' },
   { name: 'Nicolás',   email: 'nicolas@email.com',    age: 43, 
country: 'Colombia' }
  ];

let multipleDemo = people.filter((v, k) => k !== 0);
people = people.filter((v, k) => k === 0);

console.log(multipleDemo)
console.log(people)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...