簡體   English   中英

如何將對象插入到對象列表的開頭,當它未移位時不是函數錯誤?

[英]how to insert object into beginning of object list, when it has unshift is not a function error?

如何在對象列表中的對象中插入對象元素?

我在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開頭?

我已經看到了此回復如何在JavaScript中的數組開頭添加新的數組元素? 這是另一種情況,因為我的allMessages變量是一個object而不是數組。

當我嘗試使用unshift時,我得到unshift is not a function

我可以考慮解決這個問題;

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

比把它放回去

allMessages = tempMessage;

嘗試

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

您可以看到Array.prototype.slice.call()如何工作?

駭客業務,但對我而言,做到了以下幾點:

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

因此,基本上改變順序將其放在最后,然后再次改變順序,這很丑,但我知道它確實有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM