如何检查对象名称?

时间:2016-09-13 10:11:10

标签: javascript angularjs

我有对象,这个对象也包含对象。它看起来像:

  $scope.data = {
    tree : {
      name : 'oak',
      old : 54
    },
    dog : {
      name : 'Lucky',
      old : 3
    },
    system1 : {
      name : '',
      old : ''
    },
    baby : {
      name : 'Jack',
      old : 1
    },
    cat : {
      name : 'Fluffy',
      old : 2
    },
    system2 : {
      name : '-',
      old : '-'
    }
  }

正如你所看到的,这个对象的名称有 - 树,狗,系统等。我想只使用名称系统的对象,但这个名称可以像system1,system123,system8一样改变。所以我尝试使用这个reg exp来忽略数字

replace(/\d+/g, '')

但我无法达到此对象名称。我试试这个:

angular.forEach($scope.data, function(item){conole.log(item)}) // but it shows content in obj not obj name..

如何获得此obj名称并区分这2个系统对象?

4 个答案:

答案 0 :(得分:4)



var data = {
   tree : {
	 name : 'oak',
	 old : 54
   },
   dog : {
	 name : 'Lucky',
	 old : 3
   },
   system1 : {
	 name : '',
	 old : ''
   },
   baby : {
	 name : 'Jack',
	 old : 1
   },
   cat : {
	 name : 'Fluffy',
	 old : 2
   },
   system2 : {
	 name : '-',
	 old : '-'
   }
 }

 data = Object.keys(data) // get keys
 .filter(key => key.startsWith('system')) // filter keys starting with system
 .map(key => data[key]) // map to the values, returning a new array

 console.log(data) // and you have you array with systems




答案 1 :(得分:2)

将另一个参数传递给key之类的函数到forEach callBack函数。它是用例中对象内部每个对象的关键。

检查以下示例



var items = {
  car: {
    a: 123
  },
  dog: {
    b: 234
  },
  system: {
    c: 456
  }
};
angular.forEach(items, function(item, key) {
  console.log(key);
}); 

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以使用Object.keys(myObject)来返回传递对象的所有键的数组,用于istance:

var myObject= {
    cat : {
      name : 'Fluffy',
      old : 2
    },
    system2 : {
      name : '-',
      old : '-'
    }
}

var keys = Object.keys(myObject); // Keys will be ['cat', 'system2']

干杯

答案 3 :(得分:0)

你必须将另一个参数传递给angular foreach函数以获取对象的键名,如下所示: -

angular.forEach($scope.data, function(item, key){ // Here key is the keyname of the object
    console.log(item, key);
});