搜尋

首頁  >  問答  >  主體

javascript - 在js for in 迴圈中,使用陣列的push方法取得物件的屬性,結果卻未改變陣列

如題
不想用jquery的getOwnPropertyNames

#
var getProperty = function(obj) {
    var nArr = [];
    for (var i in obj) {
        nArr.push[i];
    }
    console.log(nArr);
    return nArr;
}
getProperty({a:1,b:2})

最後回傳的結果是[];
如果換成

var getProperty = function(obj) {
    var nArr = [],
        k = 0;
    for (var i in obj) {
        nArr[k] = i;
        k++;
    }
    console.log(nArr);
    return nArr;
}
getProperty({a:1,b:2});

則可以回傳正確的結果['a','b'],為何

扔个三星炸死你扔个三星炸死你2744 天前850

全部回覆(3)我來回復

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 10:59:43

    nArr.push(i)
    括號打錯! ! ! !

    回覆
    0
  • 阿神

    阿神2017-07-05 10:59:43

    JS 的 for in 存在 hasOwnProperty 的坑。
    你想要回傳 ['a', 'b'],只要:

    Object.keys(obj)

    即可(支援 IE9+)。

    回覆
    0
  • typecho

    typecho2017-07-05 10:59:43

    nArr.push[i];這個你確定運行不會報錯?

    回覆
    0
  • 取消回覆