如何在作为对象列表的对象中插入对象元素?
我在ReactJS中有一小段代码:
var allMessages = this.state.data;
var newMessages = allMessages.unshift([data]); // i suppose it should be unshift if it was an array, but it is an object o_O
this.setState({ data: newMessages });
其中: (chrome控制台输出)
> data
Object {id: "12", text: "1234124", date: "2016-04-28 20:00:07", sender: "user", type: "receiver"}
> allMessages
[Array[1], Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
> typeof allMessages
"object"
如何将data
插入allMessages
的开头?
我看过这个回复How can I add new array elements at the beginning of an array in JavaScript?,这是另一种情况,因为我的allMessages
变量是object
而不是数组。
当我尝试使用unshift is not a function
unshift
答案 0 :(得分:1)
我可以想到这项工作;
var tempMessage= {};
tempMessage.data = data;
for(var key in allMessages){
tempMessage[key] = allMessages[key];
}
不仅仅是将其设置回来
allMessages = tempMessage;
答案 1 :(得分:1)
尝试
var arr = Array.prototype.slice.call(allMessages);
arr.unshift(data);
答案 2 :(得分:0)
生意不好,但对我而言,做到了以下几点:
this.setState({data: this.state.data.reverse().concat(data).reverse()});
所以基本上改变顺序,将其放在最后,然后再次改变顺序,这很丑,我知道,但是确实可以。