能否遍历数组并排除第一个元素?

3

在遍历数组时,是否可以排除第一个元素(省略数组中的第一个对象)?

代码:

 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

我想把 { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' } 放入数组 people 中,其余元素则放入数组 multipleDemo。

我希望达到的完成效果如下:

 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' }
  ];

4
为什么在循环中不从 for(var i =1; i < people.length; i++) { 开始呢? - Mark
1
你可以像这里(https://dev59.com/G1gQ5IYBdhLWcg3wr1_V)一样切片数组。 - Nina Scholz
1
预期输出是什么? - brk
我想把 { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' } 放进数组 people 中,其余元素放进数组 multipleDemo。 - user8777652
更新了我的问题。 - user8777652
5个回答

4
你可以使用 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);


我想把 { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' } 放在数组 people 中。其余的元素我想放在数组 multipleDemo 中。 - user8777652
@Mario 现在应该符合您的要求了。 - CodeF0x

1
你可以使用数组解构来使用剩余部分的变量进行拆包和赋值,使用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

既然您只想将people数组中的元素复制到multipleDemo数组中,但不包括第一个元素,那么您可以使用slice()数组方法。

multipleDemo = people.slice(1)

.slice(1) 将会复制 people 数组中从索引1开始的内容,而不涉及到 multipleDemo 数组。
在MDN中的.slice()


0

There are many ways to achieve this. but the easiest and concise solution would be using the filter(). Which returns an array that contains each element where the condition is met.

 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)


我想在people数组中只留下{name:'Adam',email:'adam@email.com',age:12,country:'United States'}。 - user8777652
新创建的名为 multipleDemo 的数组中不包含 { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' }。我认为这就是你想要的。请再次检查 multipleDemo - Zainul Abideen
people数组必须只有一个元素 { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' } - user8777652
好的!所以你只想让 { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' } 这个元素在数组中,其他元素不要,对吗? - Zainul Abideen
我认为这正是你想要的。 - Zainul Abideen
显示剩余2条评论

0

您可以使用.slice()来从开头省略n个元素。

Array.slice(1)表示您从索引1开始取数组直到结束。

您还可以定义要切掉哪个元素。

Array.slice(1,3)将切掉索引为12的元素。在这种情况下,它将是Amalie和Estefanía。

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);
});


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接