【发布时间】:2017-11-29 04:02:38
【问题描述】:
任务
构建一个为我们的聊天应用程序提供内容过滤的服务。 该服务应侦听传入消息的 firebase 引用子“/messages”。对于写入此子项的每条消息,您都需要过滤消息并用 firebase 数据库中“/words”引用子项中的“*”替换单词。
第 1 部分 - 在屏幕上的 /messages 中列出所有消息。
第 2 部分 - 列出屏幕上 /words 处的所有单词。
第 3 部分 - 编写一个算法,将 /words 列表中的单词更改为 ****,如果它们出现在来自 /messages 的任何消息中。
import React, { Component } from 'react';
import * as firebase from 'firebase';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
messages: [],
words: [],
filterMessages: [],
};
console.log(this.state.messages, this.state.words);
}
componentWillMount() {
const messages = firebase.database().ref().child('/messages');
const words = firebase.database().ref().child('/words');
console.log(messages, words);
const messagesArray = [];
const wordsArray = [];
messages.on('child_added', snap => {
messagesArray.push(snap.val());
this.setState({
messages: messagesArray,
});
});
words.on('child_added', snap => {
wordsArray.push(snap.val());
this.setState({
words: wordsArray,
});
});
}
filterByWords = () => {
};
filterData = (data) => data.filter(this.filterByWords);
renderListItem = (data) => data.map((item, index) => {
return (
<li key={index}>{item}</li>
)
});
render() {
return (
<div className="App">
{console.log('render', this.state)}
<ul className="defaultList">
{this.renderListItem(this.state.messages)}
</ul>
<button
className="filterBtn"
onClick={() => this.filterData(this.state.messages)}
>
filter
</button>
<ul className="filterList">
{this.renderListItem(this.state.filterMessages)}
</ul>
</div>
);
}
}
export default App;
【问题讨论】:
-
Array.filter和Array.includes是你的朋友。通过检查禁用词数组中是否存在来过滤句子数组。 -
是的)我明白,但我不知道如何过滤优惠中的单词。
标签: javascript reactjs firebase filter firebase-realtime-database