No.22(数据类型、对象)

2018-06-23  本文已影响0人  梅格Drum

掌握 JavaScript 中的各个数据类型、对象的概念及常用方法

排序

Array.prototype.sort(compareFunction)


  • 如果compareFunction(a,b)大于0,a在b的后面
  • 如果compareFunction(a,b)等于0位置不发生变化
  • 如果compareFunction(a,b)小于0,a在b的前面
//number数组类型的排序
function compare(a, b) {
  if (a < b ) {           // 按某种排序标准进行比较, a 小于 b
    return -1;
  }
  if (a > b ) {
    return 1;
  }
  // a must be equal to b
  return 0;
}
//要比较数字而非字符串,比较函数可以简单的以 a 减 b,如下的函数将会将数组升序排列
function compareNumbers(a, b) {
  return a - b;
}
//string数组类型的排序
// 需要被排序的数组
            var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
            
            // 对需要排序的数字和位置的临时存储
            var mapped = list.map(function(el, i) {
              return { index: i, value: el.toLowerCase() };
            })
            
            // 按照多个值排序数组
            mapped.sort(function(a, b) {
              //字符串比较是逐个比较ascii值得大小,比如"c"<"d";
              if(a.value>b.value)
              {
                return 1;
              }
              if(a.value<b.value)
              {
                return -1;
              }
              else{
                return 0;
              }
            });
            console.log(mapped);

Array.prototype.reduce(callback[, initialValue])


reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。

  • accumulator 累加器累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(如下所示)。
  • currentValue 数组中正在处理的元素。
  • currentIndex(可选) 数组中正在处理的当前元素的索引。 如果提供了initialValue,则索引号为0,否则为索引为1。
  • array(可选) 调用reduce的数组
  • initialValue(可选) 用作第一个调用 callback的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
var sum = [0, 1, 2, 3].reduce(function (a, b) {
  return a + b;
}, 0);
// sum is 6
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
  function(a, b) {
    return a.concat(b);
  },
  []
);
// flattened is [0, 1, 2, 3, 4, 5]

Array.prototype.map()


map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

语法

let new_array = arr.map(function callback(currentValue, index, array) {
// Return element for new_array
}[, thisArg])

  • currentValue callback 的第一个参数,数组中正在处理的当前元素。。
  • index callback 的第二个参数,数组中正在处理的当前元素的索引。
  • array callback 的第三个参数,map 方法被调用的数组。
  • thisArg (可选) 执行 callback 函数时 使用的this 值。
var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
  return num * 2;
});

// doubles数组的值为: [2, 8, 18]
// numbers数组未被修改: [1, 4, 9]
var map = Array.prototype.map
var a = map.call("Hello World", function(x) { 
  return x.charCodeAt(0); 
})
// a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
上一篇下一篇

猜你喜欢

热点阅读