将具有属性的数组映射到具有不同属性的数组
Map an array with attributes to array with differents attributes
总结:
我需要做这样的事情:
来自 :
[ {
id: 1
content: "hello"
senderId: 1234
},
{
id : 2
content: "how are you"
senderId: 1234
},
]
至:
[
{
_id: 1,
text: 'hello',
user: {
_id: 1234,
},
},
{
_id: 2,
text: 'how are you',
user: {
_id: 1234,
},
},
]
解释:
我对 javascript(以及 'new' javascript 用法,如 ES6)非常陌生。我正在写一个关于本机反应的应用程序。我正在将 mobx 与 firebase 一起使用。
我有一个 MessageStore,其中包含来自 firebase 的 @oberservable 消息数组。
import {observable, computed} from 'mobx';
import {Fb} from '../firebase/firebase';
import {map, toJS} from 'mobx';
import {Config} from '../config/config';
class Message{
id : string
content : string
senderId : string
}
class MessagesStore {
@observable messages = []
idConversation : string
constructor(idConversation) {
this.idConversation = idConversation
Fb.messages.child(idConversation).on('value', (snapshot) => {
value = snapshot.val();
let message = new Message()
message.id = value.id
message.content = value.content
message.senderId = value.senderId
this.messages.push(message)
});
}
@computed get allMessages(){
return this.messages
}
@computed get json() {
return toJS(this.messages);
}
}
...
问题是我想在 UI 中使用图书馆进行聊天 (https://github.com/FaridSafi/react-native-gifted-chat)
状态必须是这样的:
this.setState({
messages: [
{
_id: 1,
text: 'Hello developer',
createdAt: new Date(),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://facebook.github.io/react/img/logo_og.png',
},
},
],
})
)
我把这段代码放在:
messagesStore.messages.observe(() => ...
我的问题是:如何将我的消息数组 (messagesStore.messages) 映射到库所需的数组。例如,我需要将我的消息属性 content 映射到 text,或者将 id 映射到 _id
我使用 Array.map()
函数找到了解决方案:
var array1 = array2.map(function(obj){
var rObj = {};
rObj['_id'] = obj.id;
rObj['text'] = obj.content;
rObj['user'] = {};
rObj['user']['_id'] = obj.senderId;
return rObj;
})
编辑 2 :
使用 ES6 清理代码:
const array = array2.map(obj => {
const { id, content, senderId } = message;
return {
_id: id,
text: content,
user: {
_id: senderId
}
};
});
总结:
我需要做这样的事情:
来自 :
[ {
id: 1
content: "hello"
senderId: 1234
},
{
id : 2
content: "how are you"
senderId: 1234
},
]
至:
[
{
_id: 1,
text: 'hello',
user: {
_id: 1234,
},
},
{
_id: 2,
text: 'how are you',
user: {
_id: 1234,
},
},
]
解释:
我对 javascript(以及 'new' javascript 用法,如 ES6)非常陌生。我正在写一个关于本机反应的应用程序。我正在将 mobx 与 firebase 一起使用。
我有一个 MessageStore,其中包含来自 firebase 的 @oberservable 消息数组。
import {observable, computed} from 'mobx';
import {Fb} from '../firebase/firebase';
import {map, toJS} from 'mobx';
import {Config} from '../config/config';
class Message{
id : string
content : string
senderId : string
}
class MessagesStore {
@observable messages = []
idConversation : string
constructor(idConversation) {
this.idConversation = idConversation
Fb.messages.child(idConversation).on('value', (snapshot) => {
value = snapshot.val();
let message = new Message()
message.id = value.id
message.content = value.content
message.senderId = value.senderId
this.messages.push(message)
});
}
@computed get allMessages(){
return this.messages
}
@computed get json() {
return toJS(this.messages);
}
}
...
问题是我想在 UI 中使用图书馆进行聊天 (https://github.com/FaridSafi/react-native-gifted-chat) 状态必须是这样的:
this.setState({
messages: [
{
_id: 1,
text: 'Hello developer',
createdAt: new Date(),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://facebook.github.io/react/img/logo_og.png',
},
},
],
})
)
我把这段代码放在:
messagesStore.messages.observe(() => ...
我的问题是:如何将我的消息数组 (messagesStore.messages) 映射到库所需的数组。例如,我需要将我的消息属性 content 映射到 text,或者将 id 映射到 _id
我使用 Array.map()
函数找到了解决方案:
var array1 = array2.map(function(obj){
var rObj = {};
rObj['_id'] = obj.id;
rObj['text'] = obj.content;
rObj['user'] = {};
rObj['user']['_id'] = obj.senderId;
return rObj;
})
编辑 2 :
使用 ES6 清理代码:
const array = array2.map(obj => {
const { id, content, senderId } = message;
return {
_id: id,
text: content,
user: {
_id: senderId
}
};
});