遍历

第二章、循环指令

走远了吗. 提交于 2019-12-04 20:48:09
循环指令 概念: vue实例: <script type="text/javascript"> new Vue({ el: "#app", data: { msg: "列表渲染", list: [1, 2, 3, 4, 5], dic: { name: 'zero', age: 88888, gender: 'god' }, persons: [ {name: "zero", age: 8}, {name: "egon", age: 78}, {name: "liuXX", age: 77}, {name: "yXX", age: 38} ] } }) </script> 1 遍历列表 <h1>{{ msg }}</h1> <!-- v-for="item in items" --> <!-- 遍历的对象: 数组[] 对象(字典){} --> <ul> <li>{{ list[0] }}</li> <li>{{ list[1] }}</li> <li>{{ list[2] }}</li> <li>{{ list[3] }}</li> <li>{{ list[4] }}</li> </ul> <!-- n为遍历的元素值 --> <ul> <li v-for="n in list">{{ n }}</li> </ul> 2 循环需要绑定 :key 属性 <!--

【转】浅谈 React/Vue/Inferno 在 DOM Diff 算法上的异同

馋奶兔 提交于 2019-12-04 20:44:42
今天看了一篇慕课网茵风泳月老师的手记,搬运到自己的博客园来,方便以后查看。 原文地址:https://www.imooc.com/article/295545 一、引言 在现代的前端渲染框架中,Virtual DOM 几乎已经成了标配,通过这样一个缓冲层,我们已经能够实现对 Real DOM 的最少操作,在大家的广泛认知中,操作 DOM 是比较慢的,因此 Virtual DOM 可以实现应用程序的性能提升。 毫无疑问,Virtual DOM 不可能全量同步到 Real DOM,因为那样就违背了设计 Virtual DOM 的初衷,那么Virtual DOM 同步到 Real DOM 的操作就称之为 DOM Diff,顾名思义,计算两个 DOM Tree 之间的差异性,增量更新 Real DOM。更新动作的原则是,能复用的节点绝不删除重新创建。 不同框架对于 DOM Diff 的理解并不完全一致,但有一点可以达成共识:由于 DOM 本身是树形(Tree)结构,不同层级之间的节点(Node)没有必要对比,因为这可能会带来 O(N³) 的计算复杂度,很可能还不如直接操作 Real DOM 来的快。因此,狭义的 DOM Diff 算法,一般指的是同一层级兄弟节点的范围之内。 本文,我就对典型的几种 DOM Diff 实现进行简单的介绍,并分析潜在的陷阱

总结一下 IEnumerable 的例子

风流意气都作罢 提交于 2019-12-04 19:04:12
本篇将围绕 《 试试 IEnumerable 的 10 个小例子 》和《 试试 IEnumerable 的另外 6 个小例子 》给出的例子,总结一下对于 IEnumerable 接口的一些使用方法,希望读者能够从中获得一些启发。 框架类型的迭代 对于一个实现了 IEnumerable 接口的类型来说,开发中最常用的,就是把这个类型的对象放入到 foreach 等循环关键词中进行迭代,遍历其中的元素进行处理。 这种遍历通常分为两种目的:遍历和查找。 IEnumerable 及其泛型版本 IEnumerable<T> 定义了一个类型的 “可迭代性”。这点很容易理解,系统中的很多集合类型都实现了该接口。 因此这些集合类型均可以采用 foreach 进行迭代遍历。但是每个集合类型的迭代方式和结果是不完全相同的,这取决于集合本身的特性。例如: List<> 、 Stack<> 和 Queue<> 的迭代的顺序不相同,因为数据结构本身要求是不同的 ConcurrentDictionary<,> 和 Dictionary<,> 在迭代时的线程安全性是不同的,因为针对线程安全的设计是不同的 BlockingCollection.GetConsumingEnumerable 方法返回一个会产生阻塞的消费者对象, 所以,即使都是丢进 foreach ,但是效果也是不完全一样的。使用这些

五、排序算法总结三(计数排序)

喜欢而已 提交于 2019-12-04 18:59:32
计数排序 一、什么是计数排序   当我们排序的时候,是对于一定范围的字符进行排序的。   比如如果是a-z26个字母排序,这个时候可能出现的字母总数一共是26个,依次遍历字母出现的顺序,然后按照字母顺序以及出现的次数重新排列就可以了。   如果是数字排序,也是这样,找到出现的数字的范围,然后对于范围以内的进行遍历,确定不同的数字出现的次数,然后按照次数一次排序。 二、例子   例子一   有这样的字母: abdefde   当我们遍历的时候得到如下的表格 字母 a b c d e f 遍历之后得到每个字母出现的次数 1 1 0 2 2 1   随后按照每个字母的顺序,出现几次就排几个,排序之后出现的结果如图所示: 秩 0 1 2 3 4 5 6 字母 a b d d e e f   例子二   有这样的一组数字:      当我们遍历之后得到该范围内每个数字的出现次数: 数字 7, 8 9 10 11 出现次数 1 2 1 0 1   当我们按照每个数字出现的次数由大到小排序之后: 秩 0 1 2 3 4 数字 7 8 8 9 11 三、算法实现   对于数字排序的过程加以说明:   上面的数字中,我们找到数字的最大值与最小值,这样获得了排序的元素范围以及大小   我们可以看到: int max=11, min=7 ; View Code   随后我们设置一个大小为 size=

深度优先搜索遍历连通图的递归算法

别说谁变了你拦得住时间么 提交于 2019-12-04 18:32:45
//深度优先搜索遍历连通图的递归算法 #include <iostream> using namespace std; #define MVNun 100 typedef char VerTexType; typedef int ArcType; typedef struct { VerTexType vexs[MVNun]; ArcType arcs[MVNun][MVNun]; int vexnum, arcnum; }Graph; bool visited[MVNun]; int FirstAdjVex(Graph G, int v); int NextAdjVex(Graph G, int v, int w); int LocateVex(Graph G, VerTexType v) { for (int i = 0;i < G.vexnum;++i) { if (G.vexs[i] == v) return i; } return -1; } void CreateUDN(Graph& G) { int i, j, k; cout << "请输入总顶点数,总边数 , 以空格隔开:"; cin >> G.vexnum >> G.arcnum; cout << endl; cout << "输入点的名称,如 a:" << endl; for (i = 0;i < G

采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了)

若如初见. 提交于 2019-12-04 18:32:36
//采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了) #include <iostream> using namespace std; #define MVNun 100 typedef char VerTexType; typedef int ArcType; typedef struct { VerTexType vexs[MVNun]; ArcType arcs[MVNun][MVNun]; int vexnum, arcnum; }Graph; bool visited[MVNun]; int FirstAdjVex(Graph G, int v); int NextAdjVex(Graph G, int v, int w); int LocateVex(Graph G, VerTexType v) { for (int i = 0;i < G.vexnum;++i) { if (G.vexs[i] == v) return i; } return -1; } void CreateUDN(Graph& G) { int i, j, k; cout << "请输入总顶点数,总边数 , 以空格隔开:"; cin >> G.vexnum >> G.arcnum; cout << endl; cout << "输入点的名称,如

深度优先搜索遍历非连通图

倖福魔咒の 提交于 2019-12-04 18:32:34
//深度优先搜索遍历非连通图 #include <iostream> using namespace std; #define MVNum 100 typedef char VerTexType; typedef int ArcType; typedef struct { VerTexType vexs[MVNum]; ArcType arcs[MVNum][MVNum]; int vexnum, arcnum; }Graph; bool visited[MVNum]; int FirstAdjVex(Graph G, int v); int NextAdjVex(Graph G, int v, int w); int LocateVex(Graph G, VerTexType v) { for (int i = 0;i < G.vexnum;++i) { if (G.vexs[i] == v) return i; } return -1; } void CreateUDN(Graph &G) { int i, j, k; cout << "请输入总顶点数,总边数,以空格隔开:"; cin >> G.vexnum >> G.arcnum; cout << endl; cout << "输入点的名称,如a" << endl; for (i = 0;i < G.vexnum;++i)

C语言博客作业04--数组

社会主义新天地 提交于 2019-12-04 17:57:33
0.展示PTA总分 一维数组 二维数组 字符数组 1.本章学习总结 1.1 学习内容总结 查找数据: 1. 遍历法 查找:从头遍历数组找到对应数据即退出循环,否则为未找到。 2. 二分法 查找: (注意:本方法只适用于按顺序排列的整型数组。) while 上限>=下限 中间值=(上限+下限)/2 如果 中间值等于所查找的数 找到数据,退出循环 如果 数>中间值 下限=中间值的前一位 否则 上限=中间值后一位 end while 插入数据: 以 7-3 简化的插入排序 为例 输入数据 for(遍历数组) 如果 找到所插入数的位置 该位置往后数据右移一位,该位置赋值为插入的数 end for 输出更改后的数组 删除数据: 1. 通过平移数组删除。 for(遍历数组) 如果 找到所需删除的数据 从该数据位置往后所有数据向前平移一位,数组长度减一 否则 输出未找到,退出循环 end for 输出更改后的数组 2. 通过定义第二个数组进行删除。 定义第二个数组b[] for(遍历数组) 如果 不是所需删除的数据 b[K++]等于该数据 否则 继续循环 end for 输出b数组 数组排序: 1. 选择法排序: for(i=0;遍历数组) for(j=i+1;遍历数组) 如果a[i]<a[j] 交换a[i]a[j] end for end for 输出重构的数组 2. 冒泡法排序:

哇,通宵两个晚上,我裂开了,我学了啥?

烈酒焚心 提交于 2019-12-04 17:49:53
Python格式化字符串 PS:是在3.6版本之后嗷 a, b = 5, 10 print(f'{a} * {b} = {a * b}') 列表list PS:好像。。跟C中的数组一样? list1 = [1, 3, 5, 7, 100] #定义?应该是这种说法吧。。 print(list1) # [1, 3, 5, 7, 100] # 乘号表示列表元素的重复 list2 = ['hello'] * 3 print(list2) # ['hello', 'hello', 'hello'] # 计算列表长度(元素个数) print(len(list1)) # 5 # 下标(索引)运算 print(list1[0]) # 1 print(list1[4]) # 100 # print(list1[5]) # IndexError: list index out of range 与c中的超出索引值差不多? print(list1[-1]) # 100 print(list1[-3]) # 5 为什么list1[-3]的值是5呢? 大概是索引是负数的话就是从左边开始过去第三为数?比如在这个例子中是[1,3,5,7,100]索引为-3时是从左边开始的-3=5 ; -2=7 ;-1=100 大概是这个亚子? list1[2] = 300 print(list1) # [1, 3, 300,

JQUERY 效果 遍历 事件

本秂侑毒 提交于 2019-12-04 17:49:32
效果   隐藏与显示 hide() 和 show()   淡入淡出 fadeIn(speed,callback)、fadeOut(speed,callback)、 fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换、fadeTo(speed,opacity,callback)   滑动 $(selector).slideDown(speed,callback);$(selector).slideUp(speed,callback);$(selector).slideToggle(speed,callback); 内置遍历数组的函数   $.map(array, function() { });取到数组或者对象array中每一项进行遍历 然后在function中处理 var attr = [1,2,3]; var newattr = $.map(attr, function(index) { return index*2; }); console.log(newattr); 得到//newattr = [2,4,6]   $.each(attr, function(key,value) {});对数组或者对象中每一项进行遍历 然后在function中处理对数组或者对象中每一项进行遍历 然后在function中处理 var attr = [