gpt4 book ai didi

javascript - 使用 Lodash 修改数组中的键

转载 作者:行者123 更新时间:2023-11-28 13:05:50 25 4
gpt4 key购买 nike

我正在尝试使用 lodash 修改对象数组,但有点困难。我想获取下面的数组并更改对象中的键。

这是我的源数组:

[
{
"id": "AD",
"name": "Andorra",
"currency": "EUR",
"timezone": "Europe/Andorra",
"links": [
{
"rel": "self",
"href": "http://localhost:8000/api/countries/AD"
},
{
"rel": "country.currency",
"href": "http://localhost:8000/api/currencies/EUR"
}
]
},
{
"id": "AE",
"name": "United Arab Emirates",
"currency": "AED",
"timezone": "Asia/Dubai",
"links": [
{
"rel": "self",
"href": "http://localhost:8000/api/countries/AE"
},
{
"rel": "country.currency",
"href": "http://localhost:8000/api/currencies/AED"
}
]
},
...
]

我希望结果是:

[
{
"value": "AD",
"title": "Andorra",
"currency": "EUR",
"timezone": "Europe/Andorra",
"links": [
{
"rel": "self",
"href": "http://localhost:8000/api/countries/AD"
},
{
"rel": "country.currency",
"href": "http://localhost:8000/api/currencies/EUR"
}
]
},
{
"value": "AE",
"title": "United Arab Emirates",
"currency": "AED",
"timezone": "Asia/Dubai",
"links": [
{
"rel": "self",
"href": "http://localhost:8000/api/countries/AE"
},
{
"rel": "country.currency",
"href": "http://localhost:8000/api/currencies/AED"
}
]
},
...
]

请注意,前两个键已重命名。我知道我可以使用 _.mapKeys 来修改键,但是我不确定如何以最佳方式迭代数组来做到这一点。

如有任何建议,我们将不胜感激。

最佳答案

使用 Array#map 进行迭代(或 lodash 的 _.map() ),并使用 Object#assign (或 _.assign() )以使用更改键生成新对象。

Assign 会将带有新键的对象与原始对象中的相应值以及不带要使用 _.omit() 替换的键的原始对象融合在一起.

var data = [{"id":"AD","name":"Andorra","currency":"EUR","timezone":"Europe/Andorra","links":[{"rel":"self","href":"http://localhost:8000/api/countries/AD"},{"rel":"country.currency","href":"http://localhost:8000/api/currencies/EUR"}]},{"id":"AE","name":"United Arab Emirates","currency":"AED","timezone":"Asia/Dubai","links":[{"rel":"self","href":"http://localhost:8000/api/countries/AE"},{"rel":"country.currency","href":"http://localhost:8000/api/currencies/AED"}]}];

var result = data.map(function(o) {
return Object.assign({
value: o.id,
title: o.name
}, _.omit(o, 'id', 'name'));
});

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

另一个选择是使用 _.mapKeys()更改键名:

var data = [{"id":"AD","name":"Andorra","currency":"EUR","timezone":"Europe/Andorra","links":[{"rel":"self","href":"http://localhost:8000/api/countries/AD"},{"rel":"country.currency","href":"http://localhost:8000/api/currencies/EUR"}]},{"id":"AE","name":"United Arab Emirates","currency":"AED","timezone":"Asia/Dubai","links":[{"rel":"self","href":"http://localhost:8000/api/countries/AE"},{"rel":"country.currency","href":"http://localhost:8000/api/currencies/AED"}]}];

var keys = { id: 'value', name: 'title' };

var result = data.map(function(o) {
return _.mapKeys(o, function(v, k) {
return k in keys ? keys[k] : k;
});
});

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 使用 Lodash 修改数组中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46554005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com