我是关于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);}
答案 0 :(得分:1)
您正在每次迭代时将tempObj添加到临时数组并更改tempObj的值。
因此,通过引用,您正在更新每个项的值,因为所有数组项都指向同一个对象。
答案 1 :(得分:0)
尝试使用unshift()
代替push()
将项目添加到数组前面
答案 2 :(得分:0)
只需在地图方法中声明var tempObj = {};
即可。那会对你有所帮助。