Как вставить / добавить объект в массив объектов? - PullRequest
0 голосов
/ 21 марта 2019

Я думал, что ниже логически правильно добавлять или вставлять объект в массив объектов, но результат, который я получаю, является прикольным.Может кто-нибудь сказать, пожалуйста, что я делаю не так здесь ??Почему код ниже возвращает пустой массив, когда я пытаюсь вставить объект в массив объектов с индексом 0, и почему код ниже, возвращающий 4, когда я пытаюсь добавить объект в конец массива объектов?

let objArr = [{
    id: 1,
    company: "Rapid Precision Mfg.",
    title: "Quality Engineer",
    firstName: "Dongyob",
    lastName: "Lee",
    officePh: "",
    ext: "",
    cell: "669-294-0910",
    email: "dyl4810@gmail.com"
  },
  {
    id: 2,
    company: "Facebook",
    title: "Frontend Developer",
    firstName: "Edward",
    lastName: "Simmons",
    officePh: "408-516-4662",
    ext: "003",
    cell: "669-252-4251",
    email: "edwardsimmons@gmail.com"
  }
]
let nobj = {
  id: 1,
  company: "Rapid Precision Mfg.",
  title: "Quality Engineer",
  firstName: "Dongyob",
  lastName: "Lee",
  officePh: "",
  ext: "",
  cell: "669-294-0910",
  email: "dyl4810@gmail.com"
}
console.log(objArr.splice(0, 0, nobj)) //Outcome: []
console.log(objArr.push(nobj)) //Outcome: 4

Ответы [ 3 ]

3 голосов
/ 21 марта 2019

splice возвращает удаленных элементов массива.Если вы не удалите никаких элементов в вызове splice, возвращенный массив будет пустым.

const arr = [0, 1, 2, 3];
// from index 0, don't remove any elements, and insert element 'foo':
console.log(arr.splice(0, 0, 'foo'));

push возвращает новую длину массива.Вывод равен 4, потому что массив начинался с 2 элементов, вы splice d один элемент (с длиной 3), затем push другой элемент с длиной 4.

Ваш текущий код

console.log(objArr.splice(0, 0, nobj))
console.log(objArr.push(nobj))

вставляет nobj в последнюю позицию и в первую позицию в массиве - если вы хотите увидеть, что это за массив, зарегистрируйте массив:

console.log(objArr);

Обратите внимание, что вместо splice в элементе с индексом 0 можно использовать unshift вместо:

const arr = [0, 1, 2, 3];
arr.unshift('foo');
console.log(arr);
0 голосов
/ 21 марта 2019

Как уже упоминалось выше, splice() возвращает удаленные элементы массива. Если вы пытаетесь выдвинуть объект в начало массива, другой способ сделать это - использовать синтаксис (yay ES6 !!). Я думаю, что это гораздо более читабельно, чем метод, который вы пытаетесь использовать.

//[nobj, ...objArr]
console.log([nobj, ...objArr]);

В отличие от unshift (), он не изменяет исходный массив objArr на месте.

const newArray = [nobj, ...objArr];
0 голосов
/ 21 марта 2019

Синтаксис соединения равен array.splice(index, howmany, item1, ....., itemX), и он возвращает removed.

Если вы хотите проверить свои изменения, сделайте console.log(objArr)

let objArr = [{
    id: 1,
    company: "Rapid Precision Mfg.",
    title: "Quality Engineer",
    firstName: "Dongyob",
    lastName: "Lee",
    officePh: "",
    ext: "",
    cell: "669-294-0910",
    email: "dyl4810@gmail.com"
  },
  {
    id: 2,
    company: "Facebook",
    title: "Frontend Developer",
    firstName: "Edward",
    lastName: "Simmons",
    officePh: "408-516-4662",
    ext: "003",
    cell: "669-252-4251",
    email: "edwardsimmons@gmail.com"
  }
]
let nobj = {
  id: 1,
  company: "Rapid Precision Mfg.",
  title: "Quality Engineer",
  firstName: "Dongyob",
  lastName: "Lee",
  officePh: "",
  ext: "",
  cell: "669-294-0910",
  email: "dyl4810@gmail.com"
}
objArr.splice(0, 0, nobj)
console.log(objArr) //Outcome: []
//console.log(objArr.push(nobj))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...