需要传递一个带有对象的数组

时间:2019-03-26 20:10:56

标签: javascript html arrays reactjs redux

  • 在我的发布请求中,我需要传递一个数组,其中包含一个对象。
  • 当我尝试在添加对象的对象内添加新属性时。
  • 但是当数组中存在对象时,我尝试添加时没有添加。 我具有体育价值数组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(`Error\n${error}`);
            });
    };
}

3 个答案:

答案 0 :(得分:1)

由于sportsValues是对象数组,因此可以将新对象放入其中。在下面查看代码。

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

console.log(sportsValues);

答案 1 :(得分:1)

我不太了解您要做什么,但是这里有一些提示:

如果要更新数组内部的对象,则必须首先选择数组内部的对象,然后更新其属性:

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' }]

等...

答案 2 :(得分:1)

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(`Error\n${error}`);
        });
  };
}