如何在对象数组中更改键名?
var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
我该如何将每个key1
更改为stroke
,以便得到:
var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
如何在对象数组中更改键名?
var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
我该如何将每个key1
更改为stroke
,以便得到:
var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
const newKey = 'stroke'; const newArrayOfObj = arrayOfObj.map(({ key1, ...rest }) => ({ [newKey]: key1, ...rest }));
这段代码会将一个名为 arrayOfObj
的对象数组,通过将其每个对象的 key1
属性映射到一个新的属性名为 stroke
的对象中来创建一个新的对象数组 newArrayOfObj
。 - Marcusvar i;
for(i = 0; i < arrayObj.length; i++){
arrayObj[i].stroke = arrayObj[i]['key1'];
delete arrayObj[i].key1;
}
ES6 map() 方法:
let arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
arrayObj = arrayObj.map(item => {
return {
stroke: item.key1,
key2: item.key2
};
});
console.log("arrayObj = " + JSON.stringify(arrayObj));
你无法更改属性名称,你必须使用新名称添加值并删除旧属性:
for (var i = 0; i < arrayObj.length; i++) {
arrayObj[i].stroke = arrayObj[i].key1;
delete arrayObj[i].key1;
}
delete
吗? - Jared Farrish只需一行 ES6 代码
尝试以下代码:
arrayObj.map(({ stroke, key2 }) => ({ yourNewKey: stroke, yourNewKey2: key2 }));
const company = [{ id:"1", name:"somename"},{ id:"1", name:"somename"}]
company.map(({ id, name }) => ({ companyId: id, companyName: name }));
// output
//[{ companyId:"1", companyName:"somename"},{ companyId:"1", //companyName:"somename"}]
不要更改键名。如果需要,你可以先赋予新的键名和值,然后再删除之前的键。以你的示例为例:
var arrayObj = [{key1,'value1', key2:'value2'},{key1,'value1', key2:'value2'}];
var o = arrayObj[0]; // get first object
var val = o.key1; // get current value
o.stroke = val; // assign to new key
delete o.key1; // remove previous key
for (var i = 0; i < arrayObj.length; i++) {
var o = arrayObj[i];
o.stroke = o.key1;
delete o.key1;
}
function changeKey(originalKey, newKey, arr)
{
var newArr = [];
for(var i = 0; i < arr.length; i++)
{
var obj = arr[i];
obj[newKey] = obj[originalKey];
delete(obj[originalKey]);
newArr.push(obj);
}
return newArr;
}
pure javascript
var array=[{oldkey:'oldkeyvalue',oldkey2:'oldkey2'}]
var result=array.map(({ oldkey: newkey, ...rest }) => ({ newkey, ...rest }));
console.log(result)
lodash或underscore js
//Lodash/underscore.js
_.map(array,(({ oldkey: newkey, ...rest }))=>({ oldkey: newkey, ...rest }))
name:full name
正确的方法
name:full_name
你可以使用 map 方法以同样的方式获得字符串对象
array.map((x)=>{
var y={};
//also use spread operator if necessary but key want to remove manually
y['full name']=x['name'];
return y;
})
另一个选择是当您有其他数组时,它们具有不同键名的对象,并且您的对象具有相等的大小。
function convertKeys (arr) {
const newFormat = arr.map((value) => {
const arrFormat = Object.values(value)
return {
newKey1: arrFormat[0],
newKey2: arrFormat[1]
}
})
}
map
,并像这个回答和这个回答一样使用箭头函数。 - T.J. Crowder