实现函数,类似jquery链式调用
var origin = [
{id:1,title:'title1'},
{id:2,title:'abcd'},
{id:3,title:'title2'},
{id:4,title:'efg'}
];
var find = function(data){
this.data = data;
this.where = function(obj){
var key = Object.keys(obj),
val = obj[key];
this.data = this.data.filter(function(x){
return val.test(x[key]);
})
return this;
};
this.order = function(key,val){ //不造desc啥意思
return this.data.sort(function(s1,s2){
return s2[key] - s1[key]
});
}
return {
data:this.data,
where:this.where,
order:this.order
}
}
var result = find(origin).where({'title':/\d$/}).order('id','desc'); //desc 非递增
console.log(result);
实现目前一些主流框架的循环渲染
var items = [
{name:'item1'},
{name:'item2'}
];
var str = '<div ali-for="item in items">{{item.name}}<div>';
var ParseDom = function(str){
var reg1 = /\sali-for=\"[a-zA-Z\s]+\"/gi,
reg2 = /\{{2}[a-zA-Z\.]+\}{2}/gi,
reg3 = /\.[a-zA-Z]+/gi,
len = items.length;
var temp = str.replace(reg1,''),
fill = str.match(reg2)[0],
key = str.match(reg2)[0].match(reg3)[0].slice(1),
clone_temp ='',
str = '';
for(var i=0;i<len;i++){
clone_temp = temp;
str+=clone_temp.replace(fill,items[i][key]);
}
console.log(str);
}
ParseDom(str);
有一个长度为100的数组,以优雅的方式求出该数组的前10个元素之和
var aa = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
sum = 0;
sum = a.slice(0,11).reduce(function(pre,current){
return pre + current;
});
console.log(sum);
不使用loop循环,创建一个长度为10的数组,并且每个元素的值等于于它的下标
// 方法1:
var q = Array(10).join(',').split(',').map(function(item,idx){
return idx;
});
console.log(q);
// 方法2:
Object.keys(String(Array(11));
// 在ES5,如果此方法的参数不是一个对象(原始的),那么它会造成 TypeError。
// 在ES2015,非对象的参数将被强制转换为一个对象。
// 方法3:
Array.from({length:10},(v,i)=>i)
// 方法4:
[...Array(10).keys()]
// 方法5:
Array(10).fill().map((v,i)=>i)
一些类型转换的例子:
http://frontenddev.org/link/c...
http://javascript.ruanyifeng....
http://www.cnblogs.com/rubylo...
求输出值1
var test = (function(a){
this.a = a;
return function(b){
return this.a + b;
}
}(function(a,b){
return a;
}(1,2)))
console.log(test(4)) //5
求输出值2
var a = {n:1};
var b = a;
a.x = a = {n:2};
alert(a.x); // --> undefined
alert(b.x); // --> {n:2}
具体解释:戳这里
功能是实现了,,不过代码有待改进^^
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。