`
鹤惊昆仑
  • 浏览: 230302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Map/Reduce-javascript版

阅读更多
/**
 * URL访问频率统计
 * map函数 处理webpag请求和应答(URL,1)的log。
 * Reduce函数 把所有相同的URL的值合并,并且输出一个成对的(URL,总个数)。 
 * 参考:http://labs.google.com/papers/mapreduce.html
 */
var mapReduceJob = {
   map:function(/*Array*/lines){
		var map_result = [];
		lines.each(function(line){
		    var url = line.match(/GET \S+.html HTTP/);//仅简单匹配html类型链接
			if(url)){
				map_result.push([url[0],1]);
			}
		});
		return map_result;
   },
   reduce:function(/*Array*/map_result){
		var reduce_result={};
		map_result.each(function(/*Array*/pair){
			reduce_result[pair[0]] ||= 0;
			reduce_result[pair[0]] += pair[1];
		});
		return reduce_result;
   },
   run:function(){
		var xhr = new XMLHTTPRequest();
        var me = this; 
		xhr.onreadystatechange = function(){
			if (xhr.readyState == 4){
				var data = xhr.responseText.split("\n");
				var map_result =  me.map(data);
				var reduce_result = me.reduce(map_result);
                console.log(reduce_result );
			}
		}
		xhr.Open("get", "http://test.com/log/log-2009-6-7.log", true);
		xhr.send(null);
   }
};
mapReduceJob.run();

分享到:
评论
2 楼 鹤惊昆仑 2009-06-08  
jindw 写道
高手,写的都是伪码啊,呵呵
reduce_result[1]  ||=0

这个是语法错误呢。

开始我还已为真能这么写,上当了。


reduce_result[pair[0]] = reduce_result[pair[0]] || 0; 

谢谢指正 确实是伪码,数组的each方法需要自己实现。
1 楼 jindw 2009-06-07  
高手,写的都是伪码啊,呵呵
reduce_result[1]  ||=0

这个是语法错误呢。

开始我还已为真能这么写,上当了。

相关推荐

    map-reduce:javascript中的map reduce算法的实现

    javascript中的map减少算法的多线程方法。 这个项目开始是一个有趣的实验。 可以在javascipt的单线程事件循环中实现此算法吗? 入门 该项目写于ES2015,并使用babel和西兰花移植到ES5。 为了充分利用该项目,您将...

    mini-map-reduce-js:重构 MapReduce 计算模型的算法(使用手写玩具 MapReduce 框架)

    map-reduce-matrix-multiplication-js 示例:字数统计 让我们实现 MapReduce 计算模型的经典示例:通过 MapReduce 计算单词。 使用mapReduce函数来自: : 地图功能: function map ( row , emit ) { var words =...

    couchdb-view-tester:您的友好帮助者,可以快速迭代CouchDB视图

    view-tester 您的友好帮助者可以快速迭代CouchDB视图CLI用法# npm install -g couchdb-view-testercouchdb-view-tester <db> [--watch] --map=<path> --reduce=<path> 例子可以在上访问您想要测试其map / reduce功能...

    fun-with-js-map-reduce:实用的 JavaScript Map Reduce 示例

    有趣的 JavaScript Map Reduce 实用的 JavaScript Map Reduce 示例关于这个小实验对我来说有两方面的意义。 一方面,我想玩弄地图并减少数组方法。 另一方面,我想围绕一个名为 Venus.js 的更新的单元测试框架。 ...

    project-39

    5. **数组方法**:像`map()`、`filter()`、`reduce()`这样的数组方法是JavaScript中处理数据的强大工具,它们在函数式编程中非常常见。 6. **事件处理**:在Web开发中,JavaScript常用于响应用户的交互,如点击按钮...

    前端大厂最新面试题-implement-map-using-reduce.docx

    本题目的核心是使用`reduce`函数实现`map`函数的功能。`map`函数是数组的一个常见操作,它遍历数组中的每个元素,并根据提供的函数返回一个新的数组,新数组中的元素是原数组元素经过函数处理的结果。而`reduce`函数...

    s2-javascript-上机练习

    【标题】"s2-javascript-上机练习" 涉及的是JavaScript编程语言的实践环节,这通常意味着我们将深入探讨如何在实际操作环境中运用JavaScript技术。JavaScript是一种广泛用于网页和网络应用的脚本语言,它能够实现...

    pouchdb-abstract-mapreduce:从原始mapreduce中拉出的抽象mapreduce(已弃用)

    从PouchDB map / reduce插件中提取的抽象map / reduce函数。 设计用于: 地图/缩小 地理查询 全文搜索查询 pouchdb-indexes(aka芒果查询,aka Cloudant查询语言) 建造 npm install npm run build 测验 警告:要...

    map-reduce-disco:大学项目

    迪斯科地图减少项目 概述 安装 sudo pip install -r requirements.txt 跑步 fab run 产生 要求 节点.js 跑步 cd generate ...node dist/app.js --file FILENAME ... 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/...

    studying-map-filter-reduce-JS:学习地图过滤器减少JS

    在JavaScript编程语言中,"地图"(Map)、"过滤器"(Filter)和"减少"(Reduce)是三种非常重要的数组方法。它们是函数式编程的核心概念,用于处理和转换数组数据,使得代码更加简洁、易读且可维护。本文将深入探讨...

    complete-javascript-course-master.zip

    函数式编程也是本课程的重要组成部分,学员会接触到高阶函数、柯里化、map、reduce等函数式编程技巧,以提升代码质量和可读性。同时,课程也会讲解异步编程,包括回调函数、Promise、async/await,这些都是解决...

    fackAchieve:手写ES6高级函数,手写Promise,模拟数据结构 ,手写常用工具库函数及框架源码模拟实现

    fackAchieve 手写 es6 函数,Promise 特性,lodash 库的函数实现,模拟 vue,React 等前端框架的实现和原理的理解。 functions 文件夹 ...functions/Array/reduce.js -- map functions/Array/map.js --

    js-advanced-functions-generalized-map-and-reduce-lab-rcdd_202104_tur_few

    当你在上一课看到,有很多的我们之间的各种重复的代码map为基础的,并reduce基础的功能。 这会在您体内引发“过敏”React。 您学会了“ DRY out”您的代码。 在本课程中,我们将学习使用JavaScript中的函数表达式来...

    无循环 JavaScript(map、reduce、filter和find)

    无循环编程通常通过使用数组方法,如`map`、`reduce`、`filter`和`find`来实现。这些方法允许我们以更简洁的方式处理数组中的数据,减少了代码重复和潜在的错误。 1. **map** 方法: `map`函数接受一个函数作为...

    Head-First-JavaScript-Programming-v2017

    4. **数组方法**:push、pop、shift、unshift、slice、splice、concat、join、map、filter、reduce等。 5. **字符串和正则表达式**:字符串方法、正则表达式模式匹配、替换、查找、分割等操作。 6. **事件处理**:...

    filter-map-e-reduce:我对过滤器映射的了解,并使用javascript进行归约

    在IT领域,尤其是在编程中,`filter()`, `map()`, 和 `reduce()` 是非常重要的数组操作方法,尤其在JavaScript中。这些函数是函数式编程的核心概念,它们可以帮助我们更简洁、高效地处理数据。 首先,让我们逐一...

    foreach-prop:对象的类似数组的方法

    foreach-prop 对象的类数组方法 :warning_selector: 某些javascript实现不遵循对象键顺序。 使用keyOf , lastKeyOf , findKey和find方法时,请记住这一点。安装npm i foreach-propCDNjsDelivr < script src =" ...

    node-mapreduce:Node的map-reduce算法

    map-reduce Node的map-reduce算法 安装 $ npm install node-mapreduce 用法 var MapReduce = require ( 'node-mapreduce' ) ; var mapReduce = MapReduce ( ) ; var article = 'A very long string' ; function ...

    Desafio-pratico-Desmistificando-map_filter-e-reduce

    标题 "Desafio-pratico-Desmistificando-map_filter-e-reduce" 指向一个实践挑战,目的是深入理解并应用JavaScript中的`map()`, `filter()`, 和 `reduce()` 这三个核心函数。这些函数是数组操作的重要工具,对于高效...

    JavaScript实现Array(数组)和Map

    此外,JavaScript提供了一系列内置方法来操作数组,如push()用于在数组末尾添加元素,pop()用于移除末尾元素,slice()用于提取数组的一部分,concat()用于连接两个或多个数组,以及map()、filter()、reduce()等用于...

Global site tag (gtag.js) - Google Analytics