确定对象属性名称是否为数字

Determining if object property name is a number

本文关键字:是否 数字 对象 属性      更新时间:2023-09-26

具有具有多个属性属性的Object

{
  ...,
  attributes:{
  [0]: "Capricorn One",
  [1]: "Total Recall",
  "name": "Jerry Goldsmith"
 }
}

我想确定其中哪些是数字键,哪些不是。

目前我正在这样做:

for d of data.attributes
  prop =  parseInt(d)
  if !_.isNaN(prop)
    # property is a number

我想知道是否有更好/更有效的方法来做同样的事情?

您现有的方法很好,但您可以通过删除parseInt调用来对其进行微调。isNaN将为您做到这一点:

for d of data.attributes
  if !_.isNaN(d)
    # property is a number

根据规范(增加重点):

如果参数强制为NaN,则返回true,否则返回false。

  1. 如果ToNumber(数字为NaN,则返回true
  2. 否则,返回false

您也可以使用本机isNaN而不是Undercore版本,因为d永远不会是undefined:

for d of data.attributes
  if !isNaN(d)
    # property is a number