Loading

小白学前端13

1.解决昨天的5-3作业题,怎么把每个世纪的祖先的平均年龄求出来?
>>>
起初用数组来存储数据,发现要建立一个数组与另一个数组的联系不太会,
然后对一个无序数组(且不能对其排序,不然会丢失其对应关系)应用选择排序,
又发现选择排序只能用在不重复的情况下啊

再来用一个对象存储,键值对的形式,挺好的,但是你是要找出相同的属性值并将他们的年龄相加
for(var name in list)--只能采用这样的形式时,怎么实现

var time =Date.now();
var ANCESTRY_FILE = require('./ancestry.js');
var ancestry = JSON.parse(ANCESTRY_FILE);

//list存放名称与世纪的键值对
var list={};
ancestry.forEach(function(person){
  var century = Math.ceil(person.died/100);
  list[person.name]=century;
});

/*
*最最精巧的在于:
*1.因为对象属性的遍历只能从开头开始,故采用了i!==j来避免叠加自己的年龄
*2.因为把相同的属性赋给对象时,对象会覆盖该属性,故可以借此实现不重复的世纪属性
*/
var count=0,
    sum=0;
    map={};
for(var i in list){
  for(var j in list){
    if(i!==j&&list[i]===list[j]){
      var specobject = byName(j);
      var age = specobject.died-specobject.born;
      sum+=age;
      count++;
    }
  }
  sum+=byName(i).died-byName(i).born;
  count++;
  map[list[i]]=sum/count;
}
console.log(map);

var time = Date.now()-time;
console.log(time);

function byName(name){
  for(var i=0;i<ancestry.length;i++){
    if(ancestry[i].name === name) break;
  }
  return ancestry[i];
}

2.想把冗余的css代码整理一下,想着可以利用多类选择器,加上一个class来统一:
<div class="firstcontent content">
...
.content{
margin:  20px 20px;
padding:40px 20px 30px 20px;
}
但是不可行..
通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限)。

那么这样的话是只能一个个指定了,对阅别人的源码:
<div id="article1" class="article">-采用了这种方法,逻辑块的其他样式用id控制,padding/margin用class来统一控制

3.对表格设置边框
1)对table设置边框,将导致只有表格的最外部有边框
2)对td设置边框,导致内部的td出现双边框
3)对td只设置两个边(左上)边框,对table也设置两个边(右下)的边框

posted @ 2017-05-20 01:17  方木  阅读(122)  评论(0)    收藏  举报