`

underscore综合运用

阅读更多

一.将value为对象数组的map转换成一维对象数组

underscoreTest.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Underscore</title>
	<script src="lib/underscore/underscore1.6.0.js"></script>
</head>

<body>
</body>
</html>
<script type="text/javascript">
	var map = {'01':[{id:'001',name:'test001'},{id:'003',name:'test003'},{id:'002',name:'test002'}],'02':[{id:'004',name:'test004'},{id:'005',name:'test005'},{id:'008',name:'test008'}]};
    console.log(_.flatten(_.toArray(map)));
</script>

运行结果:

 

二.将成员为key-value的数组转换成一维对象数组,其中value又是一个对象数组

underscoreTest02.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Underscore</title>
	<script src="lib/underscore/underscore1.6.0.js"></script>
</head>

<body>
</body>
</html>
<script type="text/javascript">
	var arr1 = [{name:'car1',age:'29'},{name:'bi',age:'28'}];
	var arr2 = [{name:'car01',age:'39'},{name:'bi01',age:'38'}];
	var arr3 = [{name:'car02',age:'49'},{name:'bi02',age:'48'}];
	var arrMap = [];
	arrMap['arr1'] = arr1;
	arrMap['arr2'] = arr2;
	arrMap['arr3'] = arr3;
	console.log(arrMap);
    console.log(_.flatten(_.values(arrMap)));
</script>

运行结果:

 

三.filter及each的使用

underscoreTest03.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Underscore</title>
	<script src="lib/underscore/underscore1.6.0.js"></script>
</head>

<body>
</body>
</html>
<script type="text/javascript">
	var jsonArr = [{'isChecked': true,'value':'01'},{'isChecked': false, 'value':'03'},{'isChecked': true, 'value':'02'}];
	var afterFilter = _.filter(jsonArr, function(a) {
		return a.isChecked;
	});
	_.each(afterFilter, function(item) {
		document.write(item.isChecked + ' ' + item.value + '<br/>');
	});
</script>

运行结果:



四.each与flatten的综合使用

underscoreTest04.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Underscore</title>
	<script src="underscore-1.5.1.min.js"></script>
</head>

<body>
</body>
</html>
<script type="text/javascript">
	var jsonArr = [{main:{num:'1111'}},{relation:[{num:'2222'},{num:'333'}]}];
	var res = [];
	_.each(jsonArr, function(obj) {
		var t = _.values(obj);
		res = res.concat(t);
	});
	res = _.flatten(res);
	console.log(res);
</script>

运行结果:

 

附:在js代码中加debugger关键字,调试模式下就会在debugger处暂停

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Underscore</title>
	<script src="lib/underscore/underscore1.6.0.js"></script>
</head>

<body>
</body>
</html>
<script type="text/javascript">
	debugger;
	var jsonArr = [{'isChecked': true,'value':'01'},{'isChecked': false, 'value':'03'},{'isChecked': true, 'value':'02'}];
	var afterFilter = _.filter(jsonArr, function(a) {
		return a.isChecked;
	});
	debugger;
	_.each(afterFilter, function(item) {
		document.write(item.isChecked + ' ' + item.value + '<br/>');
	});
</script>

运行效果:打开首先在第一个debugger处停留,F8后就会在第二个debugger处停留。

  • 大小: 37.2 KB
  • 大小: 39.3 KB
  • 大小: 12.2 KB
  • 大小: 37.4 KB
  • 大小: 19.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics