我有来自.csv文件的原始json,例如
[{
"A": "CustomerCode",
"B": "Country",
"C": "CountryCode"
},
{
"A": "C101",
"B": "AUS",
"C": "AUS01",
},
{
"A": "C102",
"B": "AUS",
"C": "AUS02",
}]
如何删除数组的第一个元素并像这样更改数组对象的键名
[{
"CustomerCode": "C101",
"Country": "AUS",
"CountryCode": "AUS01",
},
{
"CustomerCode": "C102",
"Country": "AUS",
"CountryCode": "AUS02",
}]
答案 0 :(得分:2)
您可以将.map()
与Object.entries()
和Object.fromEntries()
结合使用,使用数组中第一个对象的键创建新对象,如下所示:
const arr = [{A:"CustomerCode",B:"Country",C:"CountryCode"},{A:"C101",B:"AUS",C:"AUS01"},{A:"C102",B:"AUS",C:"AUS02"}];
const prop_map = arr.shift();
const res = arr.map(o =>
Object.fromEntries(
Object.entries(o).map(([k, v]) => [prop_map[k], v]))
);
console.log(res);
上面,.shift()
从数组中获取第一个对象作为映射对象,以供以后引用。然后.map()
负责将每个对象映射(即转换)为 new 修改后的对象。新修改的对象由.map()
的内部函数返回的值定义。在此方法中,它可以接收对象的条目(键值对数组[[key, value]]
),并使用另一个.map()
方法。该.map()
将每个键值对数组映射到一个新的键值对数组。但是,密钥现在由prop_map
(我们在开始时使用.shift()
提取的对象)中的关联值定义。现在我们有了一个键值对数组的数组,其中每个键都是prop_map
中的值,我们可以使用Object.fromEntries()
,它将这个键值对数组转换为一个对象。通过将.map()
应用于arr
返回此新对象,该对象将产生最终结果。
请注意,Object.fromEntries()确实具有limited browser compatibility,但是,如果需要,可以使用polyfill。
答案 1 :(得分:0)
您可以从数组中删除第一项,然后映射到数组上。
let data = [{
"A": "CustomerCode",
"B": "Country",
"C": "CountryCode"
},
{
"A": "C101",
"B": "AUS",
"C": "AUS01",
},
{
"A": "C102",
"B": "AUS",
"C": "AUS02",
}];
// Remove first item in array
data.shift();
let newData = data.map(({A, B, C}) => ({
CustomerCode: A,
Country: B,
CountryCode: C
}));
console.log(newData);