js keys方法和foreach方法区别

       keys和foreach都有遍历对象的功能,但他们可以遍历的对象类型是不一样的,foreach是数组对象的方法,而keys是Object对象的方法。换句话说,foreach只能数组对象使用,而keys任何对象都能使用。

1.Object.keys

       其实从字面我们就可以看出来keys代表的是键值对中的键,所以keys的作用是遍历对象中属性的键,以数组的形式返回,下面是几个具体的例子

   var a = {
       name: "lin",
       age: "10岁"
   };

   var b = {
       2: "lin",
       1: 10
   };

   var c = {
       sayName: function () {
           console.log(this.name);
       },
       2: "lin",
       1: "10岁"
   };

   var d = ["lin", 10, "man"];

 console.log(Object.keys(a)); //["name", "age"]
 console.log(Object.keys(b)); //[1, 2], 可以看到,当键为数字时,keys方法会自动帮我们从小到大排序
 console.log(Object.keys(c)); //[1, 2, sayName], 可以看到,当键为数字时,keys方法会自动帮我们从小到大排序,并且把键为字符串的排到最后
 console.log(Object.keys(d)); //[0, 1, 2],其实就是返回数组的下标

2.[].foreach

       foreach,也是遍历的作用,但是只能数组对象使用,当一个非数组调用时会抛出错误,下面是几个常见的例子

  

    var a = ["lin", 10, "man"];

    var b = {
        name: "lin",
        age: "10岁",
        sex: "man"
    }

    a.forEach(function (value, index) {     //控制台打印:0的值为lin,1的值为10,2的值为man
        console.log(index + "的值为" + value);
    })

    b.forEach(function (value, index) {     //报错,因为b不是数组对象,无法使用foreach
        console.log(index + "的值为" + value);
    })

3.[].foreach和JQuery的each区别:

      [].forEach(function(value, index, array) {}); 注意foreach第一个参数为值,第二个参数为键,第三个参数为执行的数组

      $.(function(index, value, array) {}); 注意each第一个参数为键,第二个参数为值,第三个参数为执行的数组,类似的$.map也是如此  
原文地址:https://www.cnblogs.com/yonglin/p/7822105.html