Array.pu sh () не работает, возвращает нулевой массив после push - PullRequest
1 голос
/ 13 февраля 2020

Я использую проект Vue для своей мини-поисковой системы, а ее база данных - firebase. Я хотел бы знать, является ли это языковой ошибкой или ее ошибкой библиотеки. где Array.pu sh () не работает должным образом.

Я мог показать только снимок экрана, потому что он не мог отображаться в другом воспроизведении, когда я воспроизводил код.

let trainVal1 = []
  for(let n in dataTrainingVal) {
    console.log({key: n, ...dataTrainingVal[n]})
    trainVal1.push({key: n, ...dataTrainingVal[n]})
    console.log(trainVal1)
  }

enter image description here

спасибо!

Ответы [ 4 ]

0 голосов
/ 13 февраля 2020

Кажется, что работает нормально ... единственная недостающая часть - определение dataTrainingVal.

`  let trainVal = []
   let dataTrainingVal = {firstname: 'Pedro', lastName: 'Juan'}
   for(let n in dataTrainingVal) {
      console.log({key: n, ...dataTrainingVal[n]})
      trainVal.push({key: n, ...dataTrainingVal[n]})
      console.log(trainVal)
   }
`

o / p:

(2) [{…}, {…}]

0: {0: "P", 1: " e ", 2:" d ", 3:" r ", 4:" o ", ключ:" firstname "}

1: {0:" J ", 1:" u ", 2: "a", 3: "n", ключ: "lastName"}

длина: 2

0 голосов
/ 13 февраля 2020

Вы должны изменить свой код, как показано ниже

let trainVal1 = []
  for(let n = 0; n < dataTrainingVal.length; n++) {
    console.log({key: n, data:dataTrainingVal[n]})
    trainVal1.push({key: n, data:dataTrainingVal[n]})
    console.log(trainVal1)
  }
0 голосов
/ 13 февраля 2020

Ошибка в разделе оператора распространения. Я обновил ваш код до рабочего решения.

let trainVal1 = []

let dataTrainingVal = [1,2,3]

for(let n in dataTrainingVal) {
    console.log(dataTrainingVal[n])
    trainVal1.push({key: n, val: dataTrainingVal[n]})
    console.log(trainVal1)
  }

Обратите внимание: не используйте for в l oop для итераций массива.

Примечание: for ... in не должно быть используется для перебора массива, где важен порядок индекса. Подробнее на MDN

0 голосов
/ 13 февраля 2020

Просто создайте объект для {key: n, ...dataTrainingVal[n]}, как var obj = {key: n, ...dataTrainingVal[n]}. Тогда pu sh it.

var trainVal1 = []
  for(let n in dataTrainingVal) {
    var obj = {key: n, ...dataTrainingVal[n]}
    trainVal1.push(obj)
    console.log(trainVal1)
  }

попробуйте также var insted из let

...