我想知道在JavaScript中是否有任何方法可以像这样遍历对象。

for(var i in myObject) {
    // ...
}

但是像这样获取每个属性的名称。

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}

我在谷歌上找不到类似的。他们说要传递变量的名称,但这不是我要实现的一个选项。

谢谢你能提供的任何帮助。


当前回答

这些解决方案也很有效。

// Solution One
function removeProperty(obj, prop) {
  var bool;
  var keys = Object.keys(obj);
  for (var i = 0; i < keys.length; i++) {
    if (keys[i] === prop) {
      delete obj[prop];
      bool = true;
    } 
  }
  return Boolean(bool);
}


//Solution two
function removeProperty(obj, prop) {
  var bool;
  if (obj.hasOwnProperty(prop)) {
      bool = true;
      delete obj[prop];
  }
  return Boolean(bool);
}

其他回答

使用种():

var myObject = (a)“c”,(b)“a”,(c)“b”; var keyNames = Object.keys(myObject); 游戏机。log (keyNames);输出(“a”、“b”、“c”)

object. keys()提供了一个属于输入对象的属性名数组。

当你先执行for/in循环时,i是属性名。所以你有了属性名i,并通过myObject[i]来访问这个值。

获取对象的属性或“数组键”或“数组索引”,具体取决于您的母语是什么.....使用Object.keys()方法。

重要的是,这只与“现代浏览器”兼容:

如果你的对象叫做myObject。

var c = 0;
for(c in myObject) {
    console.log(Object.keys(myObject[c]));
}

要人!这绝对适用于最新的firefox、ie11和chrome…

下面是MDN的一些文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

通过位置直接访问对象属性… 一般用于属性[0]…所以它包含了进一步… 或者在node.js的require中。缓存[0]'为第一个加载的外部模块,等等。

Object.keys( myObject )[ 0 ]
Object.keys( myObject )[ 1 ]
...
Object.keys( myObject )[ n ]

IN ES5

例如,你有这样的对象:

var ELEMENTS = {
    STEP_ELEMENT: { ID: "0", imageName: "el_0.png" },
    GREEN_ELEMENT: { ID: "1", imageName: "el_1.png" },
    BLUE_ELEMENT: { ID: "2", imageName: "el_2.png" },
    ORANGE_ELEMENT: { ID: "3", imageName: "el_3.png" },
    PURPLE_ELEMENT: { ID: "4", imageName: "el_4.png" },
    YELLOW_ELEMENT: { ID: "5", imageName: "el_5.png" }
};

现在如果你想有一个函数,如果你传递'0'作为参数-得到'STEP_ELEMENT',如果'2'得到'BLUE_ELEMENT'等等

function(elementId) {
    var element = null;

    Object.keys(ELEMENTS).forEach(function(key) {
        if(ELEMENTS[key].ID === elementId.toString()){
            element = key;
            return;
        }    
    });

    return element;
}

这可能不是这个问题的最佳解决方案,但它能给你一个如何去做的想法。

欢呼。