2014年12月5日星期五

JS数组(Array)处理函数总结 - 小小程序猿(^_^)

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
JS数组(Array)处理函数总结 - 小小程序猿(^_^)  阅读原文»

1、concat() 连接两个或更多的数组
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
例如:

1 <script type="text/javascript">
2 var arr = [1, 2, 3];
3 var arr1 = [11, 22, 33];
4 document.write(arr.concat(4, 5, arr1));
5 </script>

输出结果:
1,2,3,4,5,11,22,33

2、join()
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
例如:

1 <script type="text/javascript">
2 var arr = ['item 1', 'item 2', 'item 3'];
3 var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';
4 </script>

list结果:

'<ul><li>item 1</li><li>item 2</li><li>item 3</li></ul>'
这是迄今为止最快的方法!使用原生代码(如 join()),不管系统内部做了什么,通常比非原生快很多。——James Padolsey, james.padolsey.com

3、pop() 删除并返回数组的最后一个元素
pop()方法将删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
如果数组已经为空,则pop()不改变数组,并返回undefined值
例如:

1 <script type="text/javascript">
2 var arr = ["George", "John", "Thomas"];
3 document.write(arr + "<br/>");
4 document.write(arr.pop() + "<br/>");
5 document.write(arr);
6 </script>

输出结果:
George,John,Thomas
Thomas
George,John

4、push() 向数组的末尾添加一个或更多元素,并返回新的长度
例如:

1 <script type="text/javascript">
2 var arr = ["George", "John", "Thomas"];
3 document.write(arr + "<br/>");
4 document.write(arr.push("James") + "<br/>");
5 document.write(arr);
6 </script>

输出结果:
George,John,Thomas
4
George,John,Thomas,James

5、unshift() 向数组的开头添加一个或更多元素,并返回新的长度
例如:

1 <script type="text/javascript">
2 var arr = ["George", "John", "Thomas"];
3 document.write(arr + "<br/>");
4 document.write(arr.unshift("James") + "<br/>");
5 document.write(arr);
6 </script>

输出结果:
George,John,Thomas
4
James,George,John,Thomas

6、reverse() 颠倒数组中元素的顺序
例如:

1 <script type="text/javascript">
2 var arr = ["George", "John", "Thomas"];
3 document.write(arr + "<br/>");
4 document.write(arr.reverse());
5 </script>

输出结果:
George,John,Thomas
Thomas,John,George

7、shift() 删除并返回数组的第一个元素
例如:

1 <script type="text/javascript">
2 var arr = ["George", "John", "Thomas"];
3 document.write(arr + "<br/>");
4 document.write(arr.shift() + "<br/>");
5 document.write(arr);
6 </script>

输出结果:
George,John,Thomas
George
John,Thomas

8、slice(start,end) 从某个已有的数组返回选定的元素
请注意,该方法并不会修改数组,而是返回一个子数组
例如:

1 <script type="text/javascript">
2 var arr = ["George", "John", "Thomas"];
3 document.write(arr + "<br/>");
4 document.write(arr.slice(1) + "<br/>"); // 从第一个元素开始截取到 数组结尾
5 document.write(arr);
6 </script>

输出结果:
George,John,Thomas
John,Thomas
George,John,Thomas

9、sort() 对数组的元素进行排序
对数组的引用。请注意,数组在原数组上进行排序,不生成副本
该方法默认是按照字符编码(ASCII)的顺序进行排序的
例如:

1 <script type="text/javascript">
2 var arr = new Array(6);
3 arr[0] = "John";
4 arr[1] = "George";
5 arr[2] = "Thomas";
6 document.write(arr + "<br/>");
7 document.write(arr.sort());
8 </script>

输出结果:
John,George,Thomas
George,John,Thomas

再来看一个例子:

1 <script type="text/javascript">
2 var arr = new Array(6);
3 arr[0] = 10
4 arr[1] = 5
5 arr[2] = 40
6 arr[3] = 25
7 arr[4] = 1000
8 arr[5] = 1
9 document.write(arr + "<br/>");
10 document.write(arr.sort());
11 </script>

输出结果:
10,5,40,25,1000,1
1,10,1000,25,40,5

我们可以看到,并非是按照我们认为的按数字大小排序,如果想按照数字大小排序,则需要改变默认的排序方式,自行指定排序规则。
如下:

1 <script type="text/javascript">
Django分析之国际化处理 - F-happy  阅读原文»

最近在公司终于开始做web开发了,本以为会是简单的首页之类的小规模项目,结果上来就是一个处理大数据分析的项目,一个关于油品分析的系统,不过我接到的第一个任务是做这个网站的国际化处理,虽然项目还没有上线,还差的很多,但是国际化这个东西使用的是Django自带的来处理的,所以在一边写项目的时候就要写好国际化的代码,所以我现在就开始处理我的国际化了.

大家可以在Django Doctment上看官方的说明,我在这里就不复制官方文档了,django框架带有完善的I18N和L10N支持,其实现是基于GNU gettext的。最近看着文档研究了一下,在这里概要总结一下django国际化的处理流程。

经典用法是把ugettext_lazy导为_使用,该函数标记要翻译的符号,并在要输出该符号的时候进行翻译,返回unicode对象:

1 from django.utils.translation import ugettext as _
2 from django.utils.translation import ugettext_lazy
3
4 label=ugettext_lazy(u"日期")
5 ......
6 opt = {"data": [], "name": _(u'销售额({first},{last})')

需要输出label和opt的地方就会自动转成对应的国际化语言了,现在是在代码里面改好了,那么接下来该怎么使用呢?

紧接着在对应app目录创建locale目录,并按此格式<language>/LC_MESSAGES/创建好欲支持的语言目录,转到app目录下执行django-admin.py makemessages --all 命令, 把所有标记的翻译符号导出为po文件,打开各个<language>/LC_MESSAGES/django.po文件,把符号翻译为对应的本地言语,再执行django-admin.py compilemessages把po文件编译为mo文件,这两个命令一定要在locale的当前目录执行。

那么接下来,就要在settings文件中配置关于国际化的设置了,我们需要在settings文件中这样配置:

1 USE_I18N = True
2
3 USE_L10N = True
4
5 LANGUAGE_CODE = 'zh-cn'
6
7 TIME_ZONE = 'Asia/Shanghai'
8
9 LANGUAGES = (
10 ('en', ugettext_lazy(u"英文")),
11 ('zh-cn',ugettext_lazy(u"中文")),
12 )
13
14 #是否自动判断Accept-Language头转换语言
15 LOCALEURL_USE_ACCEPT_LANGUAGE=False
16
17 #是否显示语言前缀
18 PREFIX_DEFAULT_LOCALE = True
19
20 #是否在session中保存用户指定的语言
21 LOCALEURL_USE_SESSION=True
22
23 MIDDLEWARE_CLASSES = (
24 'django.middleware.gzip.GZipMiddleware',
25 'django.middleware.common.CommonMiddleware',
26 'django.contrib.sessions.middleware.SessionMiddleware',
27 'django.middleware.locale.LocaleMiddleware',
28 'django.middleware.csrf.CsrfViewMiddleware',
29 'django.contrib.auth.middleware.AuthenticationMiddleware',
30 'django.contrib.messages.middleware.MessageMiddleware',
31 )
32
33 TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")

注意:MIDDLEWARE_CLASSES中要增加'django.middleware.locale.LocaleMiddleware',该中间见要出现在SessionMiddleware和CacheMiddleware后,其他所有中间件之前,而TEMPLATE_CONTEXT_PROCESSORS 中要增加 'django.core.context_processors.i18n'.

当你做完以上这些操作你就可以让你的项目成功的显示多语言了,那接下来呢?你会发现实际上项目中还会有一些是无法翻译过来的,那是为什么呢?因为他们都是通过外部的js来渲染进模板中的,这样的话你再使用上面提到的方法就不行了,那么该怎么办呢?下面我就来介绍如何在外部js中做多语言的翻译.

首先,我们要在urls.py文件中这样配置:

url(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),

然后在需要国际化的模板页中引入:

<script type="text/javascript" src="/jsi18n/user

阅读更多内容

没有评论:

发表评论