最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - how to insert object into beginning of object list, when it has unshift is not a function error? - Stack Overflow

programmeradmin2浏览0评论

How to insert object element in object which is list of object ?

I have this tiny piece of code in 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 });

Where: (chrome console output)

> 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"

How to insert data into beginning of allMessages ?

I have seen this reply How can I add new array elements at the beginning of an array in JavaScript? and it is another case because my allMessages variable is an object not an Array.

I got unshift is not a function when i try to use unshift

How to insert object element in object which is list of object ?

I have this tiny piece of code in 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 });

Where: (chrome console output)

> 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"

How to insert data into beginning of allMessages ?

I have seen this reply How can I add new array elements at the beginning of an array in JavaScript? and it is another case because my allMessages variable is an object not an Array.

I got unshift is not a function when i try to use unshift

Share Improve this question edited May 23, 2017 at 10:33 CommunityBot 11 silver badge asked Apr 28, 2016 at 17:10 IljaIlja 1,2251 gold badge16 silver badges33 bronze badges 0
Add a ment  | 

3 Answers 3

Reset to default 2

Try

var arr = Array.prototype.slice.call(allMessages);
arr.unshift(data);

You can see how does Array.prototype.slice.call() work?

I can think of this work around;

var tempMessage= {};
tempMessage.data = data;
for(var key in allMessages){
     tempMessage[key] = allMessages[key];
}

Than just set it back

allMessages = tempMessage;

Hacky business but for me the following did it:

this.setState({data: this.state.data.reverse().concat(data).reverse()});

So basically change the order put it in last and change the order again, ugly I know but it does work.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论