Nodejs中UnderscoreJS精巧而强大工具包

Nodejs中UnderscoreJS精巧而强大工具包

alt UnderscoreJS精巧而强大工具包

前言:

从其他语言转向Javascript时,通常都会遇到一些困惑性问题。比如,Java中的HashMap在Javascript中如何实现?Javascript面向对象式编程如何实现继承?如何实现通用的iterator对集合对象做遍历?如何对Array实现快速排序?….

如果你真的可以自己实现这些功能,那么你的Javascript基础很扎实的!我很佩服你!但对于大部分人来说,这些基础功能应该是由底层API支持的,就像JDK一样。Underscore为我们提供了这样的一个实用工具包,而且它真的很实用!

只有你动手做了,你才能有收获。

文章目录:

  • Underscore介绍
  • Underscore安装
  • 集合部分:数组或对象
  • 数组部分
  • 函数部分
  • 对象部分
  • 实用功能
  • 链式语法
  • 字符串处理Underscore.String

请查看博客文章

http://blog.fens.me/nodejs-underscore/


6 回复

Nodejs中UnderscoreJS精巧而强大工具包

前言:

从其他语言转向JavaScript时,通常会遇到一些挑战性的问题。例如,Java中的HashMap在JavaScript中如何实现?JavaScript面向对象式编程如何实现继承?如何实现通用的迭代器来遍历集合对象?如何对数组实现快速排序?……

如果你能自己实现这些功能,那么你的JavaScript基础一定非常扎实!我非常佩服你!但对大多数人来说,这些基础功能应该由底层API来支持,就像JDK一样。Underscore为我们提供了一个实用的工具包,而且它确实非常实用!

只有你动手实践了,你才能真正掌握它。

文章目录:

  • Underscore介绍
  • Underscore安装
  • 集合部分: 数组或对象
  • 数组部分
  • 函数部分
  • 对象部分
  • 实用功能
  • 链式语法
  • 字符串处理Underscore.String

Underscore介绍

Underscore是一个轻量级的库,用于简化在JavaScript中操作数组、对象和函数的方式。它提供了许多实用的功能,使得编写复杂逻辑变得更加简单。

Underscore安装

你可以通过npm(Node.js包管理器)来安装Underscore:

npm install underscore

安装完成后,可以在项目中引入Underscore:

const _ = require('underscore');

集合部分: 数组或对象

Underscore提供了丰富的集合操作方法,如mapfilterreduce等。

示例代码:

const _ = require('underscore');

// 使用map转换数组
const numbers = [1, 2, 3, 4];
const squares = _.map(numbers, function(num) {
    return num * num;
});
console.log(squares); // 输出: [1, 4, 9, 16]

// 使用filter过滤数组
const evenNumbers = _.filter(numbers, function(num) {
    return num % 2 === 0;
});
console.log(evenNumbers); // 输出: [2, 4]

数组部分

Underscore提供了许多数组操作方法,包括但不限于eachindexOfevery等。

示例代码:

const _ = require('underscore');

const array = [1, 2, 3, 4, 5];

// 使用each遍历数组
_.each(array, function(num) {
    console.log(num);
});

// 使用indexOf查找元素
const index = _.indexOf(array, 3);
console.log(index); // 输出: 2

// 使用every检查所有元素是否满足条件
const allEven = _.every(array, function(num) {
    return num % 2 === 0;
});
console.log(allEven); // 输出: false

函数部分

Underscore还提供了函数组合和优化的方法,如debouncethrottle

示例代码:

const _ = require('underscore');

function logMessage(message) {
    console.log(message);
}

// 使用debounce限制函数调用频率
const debouncedLog = _.debounce(logMessage, 300);

setTimeout(() => debouncedLog('Hello'), 100); // 100ms后调用
setTimeout(() => debouncedLog('World'), 200); // 200ms后调用
setTimeout(() => debouncedLog('!'), 400); // 400ms后调用

对象部分

Underscore还提供了许多对象操作方法,如keysvaluespairs

示例代码:

const _ = require('underscore');

const obj = { a: 1, b: 2, c: 3 };

// 获取对象的所有键
const keys = _.keys(obj);
console.log(keys); // 输出: ['a', 'b', 'c']

// 获取对象的所有值
const values = _.values(obj);
console.log(values); // 输出: [1, 2, 3]

实用功能

Underscore还提供了许多实用的功能,如模板引擎、深比较等。

示例代码:

const _ = require('underscore');

const template = _.template('<p>Hello, <%= name %>!</p>');
const result = template({ name: 'John' });
console.log(result); // 输出: <p>Hello, John!</p>

链式语法

Underscore支持链式语法,允许连续调用多个方法。

示例代码:

const _ = require('underscore');

const numbers = [1, 2, 3, 4];

const result = _.chain(numbers)
    .map(function(num) { return num * num; })
    .filter(function(num) { return num > 5; })
    .value();

console.log(result); // 输出: [9, 16]

字符串处理Underscore.String

Underscore还提供了一个扩展模块Underscore.String,用于字符串处理。

示例代码:

const _s = require('underscore.string');

const str = 'hello world';

console.log(_s.capitalize(str)); // 输出: Hello world
console.log(_s.trim(str)); // 输出: hello world

结语

通过上述示例,我们可以看到Underscore为JavaScript提供了丰富且强大的功能,使我们在处理数据时更加高效和方便。希望这篇文章对你有所帮助!


Underscore不错,不过我用性能更好的lodash, http://lodash.com/

还有好东西啊,再学一下!感谢。

写的不错.
cnodejs怎么感觉没有常见的喜欢或是感谢功能啊.
v2exRuby China那边的功能很实用.
建议cnode有牛人有空可以加上.
^_^

谢谢! :-)

Nodejs中UnderscoreJS精巧而强大工具包

前言:

Underscore.js 是一个非常强大的 JavaScript 库,提供了许多方便的函数来简化数组、对象和函数的处理。无论你是刚接触 JavaScript 还是经验丰富的开发者,Underscore 都能提供很多有用的工具。

文章目录:

  1. Underscore介绍
  2. Underscore安装
  3. 集合部分: 数组或对象
  4. 数组部分
  5. 函数部分
  6. 对象部分
  7. 实用功能
  8. 链式语法
  9. 字符串处理 Underscore.String

1. Underscore介绍

Underscore 提供了多种实用的功能,包括但不限于:创建迭代器、数据过滤、映射、归约等。通过 Underscore,你可以更方便地操作数据结构,并提高代码的可读性和效率。

2. Underscore安装

可以通过 npm 安装 Underscore:

npm install underscore

3. 集合部分: 数组或对象

Underscore 提供了许多用于处理数组和对象的方法。例如,_.map 方法可以对数组的每个元素应用一个函数并返回新的数组:

const _ = require('underscore');

let numbers = [1, 2, 3, 4, 5];
let squares = _.map(numbers, function(num) {
    return num * num;
});
console.log(squares); // 输出 [1, 4, 9, 16, 25]

4. 数组部分

数组部分包含许多常用的操作方法,如 _.filter, _.find, _.reject 等。例如,使用 _.filter 可以筛选出符合条件的元素:

let evenNumbers = _.filter(numbers, function(num) {
    return num % 2 === 0;
});
console.log(evenNumbers); // 输出 [2, 4]

5. 函数部分

Underscore 提供了一些高阶函数方法,如 _.partial 可以部分应用参数:

let multiply = function(a, b) {
    return a * b;
};

let multiplyByTwo = _.partial(multiply, 2);
console.log(multiplyByTwo(5)); // 输出 10

6. 对象部分

对象部分提供了许多方法,如 _.keys, _.values, _.pairs 等。例如,获取对象的所有键:

let person = { name: 'Alice', age: 25 };
let keys = _.keys(person);
console.log(keys); // 输出 ['name', 'age']

7. 实用功能

Underscore 还有一些实用的功能,如 _.throttle_.debounce 用于节流和防抖:

window.addEventListener('resize', _.throttle(function() {
    console.log('Window resized');
}, 100));

8. 链式语法

Underscore 支持链式调用,通过 chain 方法可以链接多个操作:

let result = _.chain(numbers)
    .filter(num => num > 2)
    .map(num => num * num)
    .value();
console.log(result); // 输出 [9, 16, 25]

9. 字符串处理 Underscore.String

Underscore.String 扩展了基本的字符串操作方法,例如 _.str.include 可以检查字符串是否包含某个子字符串:

let str = "Hello World";
console.log(_.include(str, 'World')); // 输出 true

通过上述示例,可以看到 Underscore.js 提供了大量的实用工具方法,极大地简化了数组、对象和函数的处理。希望这些示例对你有所帮助!

回到顶部