var arr=[1, 3, 4, 52010, 3001, 20, 123]
arr.sort(function(a, b) {
if(a < b) {
return -1
else if(a > b){
return 1
else if(a == b){
return 0
console.log('arr =' + arr);
4、创建一个对象数组,根据对象属性进行排序
var arr = [ {name:'houzi', age:500}, {name:'bajie', age:600}, {name:'xiaobailong', age:550}];
function compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
console.log('arr =' + JSON.stringify(arr.sort(compare('age'))));
// arr =[{"name":"houzi","age":500},{"name":"xiaobailong","age":550},{"name":"bajie","age":600}]
复制代码
六:react native动态添加子视图
将组件放入到一个数组里面,然后在渲染的时候,将数组作为参数。
// 添加篮球
let BallBlues = []
for (let i = 0
BallBlues.push(
<BallBlue key={i} num={blueBall[i]}/>
// 添加红球
let BallReds = []
for (let i = 0
BallReds.push(
<BallRed key={i} num={redBall[i]}/>
return (
<View style={styles.iTemRootView}>
<View style={styles.iTemBottomView}>
{BallBlues}
{BallReds}
</View>
</View>
复制代码
七:JavaScript基础:数组查找指定元素
var arrayNumber = [1, 2, 3];
console.log(arrayNumber.includes(2));
console.log(arrayNumber.includes(0));
复制代码
var pets = ['cat', 'dog', 'bat'];
console.log(pets.includes('cat'));
console.log(pets.includes('at'));
复制代码
八:React Native基础:样式传递
为了让一个 call site 定制你的子组件的样式,你可以通过样式传递。使用 View.propTypes.style
和 Text.propTypes.style
,以确保只有样式被传递了。
var List = React.createClass({
propTypes: {
style: View.propTypes.style,
elementStyle: View.propTypes.style,
render: function() {
return (
<View style={this.props.style}>
{elements.map((element) =>
<View style={[styles.element, this.props.elementStyle]} />
</View>
<List style={styles.list} elementStyle={styles.listElement} />
复制代码
九:React Native借力:学习资源
1、ReactNative 学习资源大汇集
十:JavaScript基础:判断函数是否存在
ref属性接收一个function作为回调的时候,需要判断这个函数是否赋值,如果为空会报错
static propTypes = {
SelectedBall: PropTypes.func,
复制代码
if(typeof this.props.SelectedBall === "function"){
this.props.SelectedBall(this.props.num, !this.state.selected);
this.setState({
selected: !this.state.selected
复制代码
十一:React Native基础:TouchableHighlight组件
参考链接1
参考链接2
<TouchableHighlight
style={{marginTop:20}}
activeOpacity={0.7}
underlayColor='green'
onHideUnderlay={()=>{
this.setState({text:'衬底被隐藏'})
onShowUnderlay={()=>{
this.setState({text:'衬底显示'})
onPress={()=>{
<View style={styles.button}>
<Text style={styles.buttonText}>
TouchableHighlight
</Text>
</View>
</TouchableHighlight>
<Text style={styles.text}>{this.state.text}</Text>
复制代码
十二:ios原生调用js以及第三方js开源库
需求:使用js编写工具类,处理业务逻辑给Swift或者OC使用
【代码演示:】
【一图胜万言】
一: js调用原生
方式一:在iOS 7之前采用UIWebView
在iOS7之前,原生应用和Web应用之间很难通信。如果你想在iOS设备上渲染HTML或者运行JavaScript,你不得不使用UIWebView
例如:PhoneGap、WebViewJavascriptBridge
方式二:在iOS 7之后采用JavaScriptCore
JavaScriptCore中类及协议:
JSContext:给JavaScript提供运行的上下文环境
JSValue:JavaScript和Objective-C数据和方法的桥梁
JSManagedValue:管理数据和方法的类
JSVirtualMachine:处理线程相关,使用较少
JSExport:这是一个协议,如果采用协议的方法交互,自己定义的协议必须遵守此协议
二:原生调用JS
Objective-C与JavaScript交互的那些事
笔记:iOS 与 JavaScript 的交互(二)JavaScriptCore
JavaScriptCore in Swift
十三:react native 使用realm studio查看数据库文件
1、查看默认路径
console.log('realm path:', realm.path)
复制代码
2、自定义路径,方便调试
const PersonSchema = {
name: 'Person',
primaryKey:'id', // 官方没给出自增长的办法,而且一般不会用到主键,这也解决了重复访问的问题
properties: {
id:'int',
name: 'string',
tel_number: {type: 'string', default: '156xxxxxxxx'},
city: 'string' // 直接赋值的方式设置类型
const schemas =
[ { schema: [PersonSchema],
schemaVersion: 0,
path: '/Users/userName/Desktop/realmDB/myModel.realm'
let realm = new Realm(schemas[schemas.length - 1])
复制代码
1、参考官方