javascript - 在 JavaScript 属性名称中搜索字符

标签 javascript

我是 JavaScript 的新手,所以如果这很愚蠢/不可能,请原谅我,但我正在尝试标准化 JavaScript 对象中的属性名称。比如我有这样的代码

var object = {
    "firstName": "Joe",
    "MiddleName": "Roy",
    "last_name": "Fool"
}

我想创建一个具有属性名称 firstName、middleName 和 lastName 的新对象。有什么方法可以搜索这些属性并查看哪些属性违规?否则,我总是可以完全复制,但效率很低。谢谢

最佳答案

这可能超出了您的要求,但是将下划线分隔的命名转换为驼峰式命名非常容易;您可以遍历您的对象并生成一个具有正确名称的新对象:

var converter = /_(\w)/g, lowerFirst = /^(\w)/;
function convertName(name) {
  if (converter.test(name)) {
    name = name.toLowerCase().replace(converter, function ($0, $1) {
             return $1.toUpperCase();
           });
  } else {
    // correct a first letter being uppercase
    name = name.replace(lowerFirst, function ($0, $1){ return $1.toLowerCase(); });
  }

  return name;
}

var hasOwnProperty = Object.prototype.hasOwnProperty,
    toString = Object.prototype.toString;

function isPlainObject(obj) {
  return toString.call(obj) === '[object Object]';
}


function convertObject(obj) {
  var k, output = {};
  for(k in obj) {
    if (hasOwnProperty.call(obj, k)) {
      output[convertName(k)] = isPlainObject(obj[k]) ? convertObject(obj[k]) : obj[k];
    }
  }

  return output;
}

如果属性名称已经是驼峰式,则它们不会被正则表达式更改。

关于javascript - 在 JavaScript 属性名称中搜索字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350932/

相关文章:

javascript - CSS 渐变,其中颜色值源自元素 props

javascript - JQuery 可通过 document.createElement 动态拖动

javascript - 如何在 React 中强制路由

javascript - 从mySQL获取ID并使用php在ajax中设置localstorage

javascript - 为什么 this.props.children.map 不起作用?

javascript - 当我选择时禁用复选框

javascript - 从 codeigniter 查询到 javascript 日志

javascript - 在多个文件中使用函数

javascript - 当数据来自服务器时,Knockout.JS 在 Select 标记中找不到值属性

javascript - 监听主干模型中对象的更改事件