如何在javascript中的项目数组中最有效地重命名键?

时间:2015-11-09 02:55:49

标签: javascript

我有一个10000个对象的数组。每个对象都是这样的:

{"id":5, "name": "Jordin Sparks}

对我来说,重命名键的最有效和最快捷的方法是什么,以便数组中的每个对象都变为:

{"num":5, "fullname": "Jordin Sparks"}

换句话说,“id”属性被重命名为“num”,每个对象的“name”属性被重命名为“fullname”。

5 个答案:

答案 0 :(得分:1)

我不知道这是否确实是最有效的,但这是我的尝试。

for(var i = arr.length; i--; ){
  var obj = arr[i];
  obj.num = obj.id;
  obj.fullname = obj.name;
  delete obj.id;
  delete obj.name;
}

答案 1 :(得分:1)

就个人而言,我会这样做。

renameKeys(myArray, [ 
  {from: "id", to: "num" }, 
  { from: "name", to: "fullname" } 
]);

您可以这样称呼它,其中myArray是您的对象数组。

<?php
$urls = "
    http://
    http://
    http://
    http://";

var_dump(array_map(function($s){return trim($s);},explode(PHP_EOL,trim($urls))));

具有可重用于任意数量的名称重新映射的优点。不修改原生原型。并且只需在阵列周围迭代一次,无论发生多少次重映射。

答案 2 :(得分:1)

蛮力逼近。转换为字符串,重命名字段并解析为JSON

var src = {"id":5, "name": "Jordin Sparks"};

var str = JSON.stringify(src);

var rst = JSON.parse(str.replace(/"id"/g, '"num"').replace(/"name"/g, '"fullname"'));
console.debug(rst);

编辑:修改替换为全局。

答案 3 :(得分:0)

来自https://stackoverflow.com/a/4648411/5403473

Object.prototype.renameProperty = function (oldName, newName) {
    // Do nothing if the names are the same
    if (oldName == newName) {
        return this;
    }

    // Check for the old property name to avoid a ReferenceError in strict mode.
    if (this.hasOwnProperty(oldName)) {
        this[newName] = this[oldName];
        delete this[oldName];
    }

    return this;
};

您将运行objectOf1000.renameProperty('id', 'num')objectOf1000.renameProperty('name', 'full name')

答案 4 :(得分:0)

arr.map(function (item) { return { num: item.id, fullname: item.name } });