我有一个10000个对象的数组。每个对象都是这样的:
{"id":5, "name": "Jordin Sparks}
对我来说,重命名键的最有效和最快捷的方法是什么,以便数组中的每个对象都变为:
{"num":5, "fullname": "Jordin Sparks"}
换句话说,“id”属性被重命名为“num”,每个对象的“name”属性被重命名为“fullname”。
答案 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 } });