необходимо передать массив с объектом внутри него

#javascript #html #arrays #reactjs #redux

#javascript #HTML #массивы #reactjs #сокращение

Вопрос:

  • В моем запросе post мне нужно передать массив с объектом внутри него.
  • когда я попытался добавить новые свойства внутри объекта, его добавление.
  • но когда я попытался добавить, когда объект присутствует внутри массива, он не добавляется. У меня есть спортивные значения в виде массива const sportsValues = [{ ...values }];
  • Я пытаюсь создать что-то подобное этому, чтобы я мог передавать в api [
    {
    "playerName": 3,
    "playerHeight": 1
    }
    ]
  • можете ли вы сказать мне, как это исправить.
  • предоставляю свой фрагмент кода ниже.
 export function sports(values) {
    const sportsValues = [{ ...values }];
    sportsValues.push(playerName:'3');
    console.log("sportsValues--->", sportsValues);

    // sportsValues.playerName = 3//'';
    // sportsValues.playerHeight = 1//'';
    console.log("after addition sportsValues--->", sportsValues);
    console.log("after deletion sportsValues--->", sportsValues);

    return dispatch => {
        axios
            .post(`${url}/sport`, sportsValues)
            .then(() => {
                return;
            })
            .catch(error => {
                alert(`Errorn${error}`);
            });
    };
}
  

Ответ №1:

Поскольку sportsValues это массив объектов, вы можете вставить в него новый объект. Ознакомьтесь с кодом ниже.

 const sportsValues = [];
sportsValues.push({ 
  playerName:'3',
  playerHeight: 1,
});

console.log(sportsValues);  

Ответ №2:

Я не совсем понимаю, что вы пытаетесь сделать, но вот несколько указаний:

Если вы пытаетесь обновить объект, который находится внутри массива, вам сначала нужно выбрать объект внутри массива, затем обновить его атрибут:

sportsValues[0].playerName = 3

хотя я рекомендую сначала правильно создать объект, а затем передать его в массив, на мой взгляд, это немного облегчает понимание:

 const sportsValues = [];
const firstValue = { ...values };
firstValue.playerName = '3';
sportsValues.push(firstValue);
  

или

 const firstValue = { ...values };
firstValue.playerName = '3';
const sportsValues = [firstValue];
  

или

 const sportsValues = [{
  ...values,
  playername: '3',
}];
  

если вы пытаетесь добавить новый объект в массив, вы можете сделать это:

 const sportsValues = [{ ...values }];
sportsValues.push({ playerName: '3' });
etc...
  

Array.push добавляет новый элемент в массив, поэтому в вашем коде у вас будет 2 элемента, потому что вы назначаете 1 элемент в начале, а затем нажимаете новый элемент:

 const ar = [];
// []
ar.push('item');
// ['item']
ar.push({ text: 'item 2' });
// ['item', { text: 'item 2' }]
  

и т.д…

Ответ №3:

 export function sports(values) {
  const sportsValues = [{ ...values }];
  sportsValues.push(playerName:'3');
  let playerName='3' 
  sportsValues.playerName= playerName; // you can bind in this way
  console.log("sportsValues--->", sportsValues);

  return dispatch => {
    axios
        .post(`${url}/sport`, sportsValues)
        .then(() => {
            return;
        })
        .catch(error => {
            alert(`Errorn${error}`);
        });
  };
}