Невозможно прочитать свойство 'pu sh' из неопределенного jquery - PullRequest
0 голосов
/ 22 апреля 2020

Я сталкиваюсь с проблемой, которая с тех пор не решается, потому что я делаю правильный путь, но, к сожалению, выдает ошибку "Uncought TypeError: Невозможно прочитать свойство 'pu sh' of undefined" ниже приведен пример кода

var parametersData = {};
data.dateList.forEach((date, index) => {
  parametersData[date].push(date);
  parametersData['success'].push(data.report[date]['success']);
  parametersData['unsuccess'].push(data.report[date]['unsuccess']);
});

enter image description here Кто-нибудь, пожалуйста, помогите, в чем проблема? Спасибо

Ответы [ 5 ]

0 голосов
/ 23 апреля 2020

Это решит мою проблему

var parametersData = {data:[], success: [], unsuccess:[]};
data.dateList.forEach((date, index) => {
   parametersData->date.push(date);
   parametersData->success.push(data.report[date]['success']);
   parametersData->unsuccess.push(data.report[date]['unsuccess']);
});

Спасибо всем

0 голосов
/ 22 апреля 2020

pu sh работает только для javascript массивов. Вместо этого сделайте это ..

var parametersData={}; //<<Its an Object 
data.dateList.forEach((date,index)=>{
parametersData[date]=date; //assigning values 
parametersData['success']=data.report[date]['success'];
parametersData['unsuccess']=data.report[date]['unsuccess'];
});
0 голосов
/ 22 апреля 2020
var parametersData = {
 success:[],
 unsuccess:[]
};
data.dateList.forEach((date, index) => {
 if( parametersData[date]){
   parametersData[date].push(date);
 }else{
     parametersData[date] = []
    parametersData[date].push(date);
 }

 parametersData['success'].push(data.report[date]['success']);
 parametersData['unsuccess'].push(data.report[date]['unsuccess']);
});

эй попробуйте это, вы не инициализировали массив, так как он не в состоянии pu sh, элемент в нем просто проверяет, есть ли массив, тогда pu sh и если его там не было, просто инициализировать один и затем pu sh в него

0 голосов
/ 22 апреля 2020

Так как parametersData [дата] пусто, pu sh терпит неудачу в этом. Сначала вы должны присвоить значение в виде массива, а затем pu sh. Например,

If (! Array.isArray (parametersData [дата]) parametersData [дата] = []

parametersData [дата] .pu sh (дата)

0 голосов
/ 22 апреля 2020

parametersData это объект. Вы не можете push() войти в объект, только массивы.

Однако, поскольку data.dateList представляется самим массивом, и вы используете forEach() для его итерации, ваш вывод тоже должен быть массивом. Таким образом, вы можете использовать map() вместо;

let parametersData = data.dateList.map(date => ({
  [date]: date,
  success: data.report[date].success,
  unsuccess: data.report[date].unsuccess
}));

let data = {
  dateList: ['01/01/2020', '02/02/2020'],
  report: {
    '01/01/2020': {
      success: 's1',
      unsuccess: 'us1'
    },
    '02/02/2020': {
      success: 's2',
      unsuccess: 'us2'
    }
  }
}

let parametersData = data.dateList.map(date => ({
  [date]: date,
  success: data.report[date].success,
  unsuccess: data.report[date].unsuccess
}));

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