объекты в массивах - получение значений - PullRequest
0 голосов
/ 01 февраля 2019

Как показано в коде ниже, каждый 8-й день я хочу удалить игрока с самым низким счетом из массива игроков и добавить один из footballStars.Мой код удаляет одну футбольную звезду каждые 8 ​​дней и добавляет ее в качестве массива к основному массиву объектов.Я попытался с Object.assign, но все еще не могу получить все данные сразу в концезвезды футбола, которые были добавлены.

var players = [{name: 'Mario', points: 10}, {name:'Marko', points: 8}, {name: 'Andrea', points: 11}, {name: 'Milan', points: 5},{name: 'Matteo', points: 12}, {name: 'Dario', points: 3}, {name: 'Davide', points: 6}, {name:'Darko', points: 16}, {name: 'Fabio', points: 5}, {name: 'Paolo', points: 6}, {name: 'Pablo', points: 7}, {name: 'Goran', points: 13}, {name:'Biaggio', points: 4}, {name: 'Ronaldo', points: 4},{name: 'Andreas', points: 8},{name: 'Paulo', points: 17}, {name: 'Vasco', points: 13}, {name: 'Tino', points: 1}, {name: 'Adriano', points: 6}, {name:'Alessandro', points: 10}, {name: 'Alessio', points: 2}, {name: 'Michele', points: 12}];
    
var footballStars = [{name: 'David', points: 23}, {name: 'Freddie', points: 30}, {name: 'Andrey', points: 24}, {name: 'Cristiano', points: 26}];


var copy = [];

function playersData(item, index) {
  var players2 = [" Player name: " + item.name + ",", " points: " + item.points + " "].join(" ");
  return players2;
}

function getPlayers() {
  var playersD = players.map(playersData);
  console.log(players.map(playersData));
  return playersD;

}
var playersDt = getPlayers();

function getStars() {
  var playersS = footballStars.map(playersData);
  console.log(footballStars.map(playersData));
  return playersS;
}

var playersST = getStars();

var playersPoints = players.sort(function(a, b) {
  return a.points - b.points;
});
console.log(playersPoints);


for (var i = 0; i <= 30; i++) {
  if (i % 8 === 0) {
    var dismissed = playersPoints.shift();
    console.log("The coach dismissed the player with the lowest score: " + " Player's name: " + dismissed.name + ", points: " + dismissed.points);
    var addStar = footballStars.splice(Math.floor(Math.random() * footballStars.length), 1);
    console.log("A football star joined the team: ");
    var addStar2 = Object.assign({}, [addStar.map(playersData)]);
    players.push(addStar2);
    console.log(addStar2);
  }
}

console.log(players);
getStars();
var table = document.createElement("table");
document.body.appendChild(table);
var tableRow5 = document.createElement("tr");
tableRow5.innerHTML = "Changes in team:";
tableRow5.style.backgroundColor = "#afadac";
tableRow5.style.fontSize = "20px";
table.appendChild(tableRow5);
var tableData5 = document.createElement("td");

tableData5.innerHTML = players.map(playersData);

table.appendChild(tableData5);

1 Ответ

0 голосов
/ 01 февраля 2019

Я не знаю, пытаетесь ли вы этого достичь.Если это так, то вы оказались на правильном пути.

Ваша функция playersData создает объединенную строку информации об игроке, которая затрудняет анализ структуры таблицы позже в коде.

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

Вы также заметите, что яотрегулировал петлю for, чтобы просто.Сохранение структуры данных в такте позволяет помещать новую звезду прямо в массив игроков.

var players = [{name: 'Mario', points: 10}, {name:'Marko', points: 8}, {name: 'Andrea', points: 11}, {name: 'Milan', points: 5},{name: 'Matteo', points: 12}, {name: 'Dario', points: 3}, {name: 'Davide', points: 6}, {name:'Darko', points: 16}, {name: 'Fabio', points: 5}, {name: 'Paolo', points: 6}, {name: 'Pablo', points: 7}, {name: 'Goran', points: 13}, {name:'Biaggio', points: 4}, {name: 'Ronaldo', points: 4},{name: 'Andreas', points: 8},{name: 'Paulo', points: 17}, {name: 'Vasco', points: 13}, {name: 'Tino', points: 1}, {name: 'Adriano', points: 6}, {name:'Alessandro', points: 10}, {name: 'Alessio', points: 2}, {name: 'Michele', points: 12}];
    
var footballStars = [{name: 'David', points: 23}, {name: 'Freddie', points: 30}, {name: 'Andrey', points: 24}, {name: 'Cristiano', points: 26}];

var playersPoints = players.sort(function(a, b) {
  return a.points - b.points;
});

for (var i = 0; i <= players.length; i++) {
  if (i % 8 === 0) {
    var dismissed = playersPoints.shift();
    console.log("The coach dismissed the player with the lowest score: " + " Player's name: " + dismissed.name + ", points: " + dismissed.points);
    var addStar = footballStars.splice(Math.floor(Math.random() * footballStars.length), 1)[0];
    console.log("A football star joined the team: ", addStar);
    players.push(addStar);
  }
}

var table = document.createElement("table");
var headerRow = document.createElement("th");
headerRow.style.backgroundColor = "#afadac";
headerRow.style.fontSize = "20px";

Object.keys(players[0]).forEach(key => {
  let headerCol = document.createElement("td");
  headerCol.textContent = key;
  headerRow.appendChild(headerCol);
});
table.appendChild(headerRow);

players.forEach(player => {
  let row = document.createElement("tr");
  Object.keys(player).forEach(key => {
    let col = document.createElement("td");
    col.textContent = player[key];
    row.appendChild(col);
  });
  table.appendChild(row);
});
document.body.appendChild(table);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...