将推送对象反应到数组中,始终推送最后一个数组

时间:2017-05-11 09:50:05

标签: javascript arrays reactjs object

我是关于React Js的新事物。 已经尝试push object into array

我已经使用axios获得了结果,但是我无法将其推送到数组。结果总是返回最后一个数组,F.ex:[0]: {channel:"esl_dota2", stream:null},[1]: {channel:"esl_dota2", stream:null},[2]: {channel:"esl_dota2", stream:null},[3]: {channel:"esl_dota2", stream:null},[4]: {channel:"esl_dota2", stream:null},

GetStream(){
var channels = ['comster404', 'freecodecamp', 'noobs2ninjas', 'esl_dota2', 'ESL_SC2'];
var temp = [];
var tempObj = {};

channels.map((i) => {
  axios({
    url: this.state.API_URL + i
  })
  .then(yeah => {         
    console.log(i);
    tempObj.channel = i;
    tempObj.stream = yeah.data.stream;      
    temp.push(tempObj);               
  })
  .catch(oops => {
    console.log(oops.status);
  });
});

console.log(temp);}

3 个答案:

答案 0 :(得分:1)

您正在每次迭代时将tempObj添加到临时数组并更改tempObj的值。

因此,通过引用,您正在更新每个项的值,因为所有数组项都指向同一个对象。

答案 1 :(得分:0)

尝试使用unshift()代替push()将项目添加到数组前面

答案 2 :(得分:0)

只需在地图方法中声明var tempObj = {};即可。那会对你有所帮助。