gpt4 book ai didi

javascript - 如何仅更改对象中键的第一个实例

转载 作者:行者123 更新时间:2023-12-01 16:18:03 25 4
gpt4 key购买 nike

所以我找到了很多关于如何找到对象中键的第一个实例的例子,但我一直没能找到如何既找到又只改变第一次出现的名字。

为了澄清,我目前有一个循环遍历对象并更改属性名称(如果列出要更改的属性名称)的函数。例如。 'first_name' 为 'firstName','customer' 为 'individual',等等。

在许多地方也有属性“id”,但我只想在第一个找到“id”的实例中将“id”更改为“customerId”。

基本上,我想要这个对象

{
"id": "12345",
"location": {
"id": "400",
"name": "New York",
},
"customer": {
"id": "2222",
"first_name": "Bob",
"last_name": "Jones"
},
"address": [
{
"line1": "123 Sesame Street",
"city": "Springfield",
"country": "US",
"state": "NY"
}
],
}

看起来像

{
"customerId": "12345",
"location": {
"id": "400",
"name": "New York",
},
"individual": {
"id": "2222",
"firstName": "Bob",
"lastName": "Jones"
},
"address": [
{
"line1": "123 Sesame Street",
"city": "Springfield",
"country": "US",
"state": "NY"
}
],
}

目前我的函数正在将“id”的所有实例更改为“customerId”,但我只希望它发生在对象中找到的第一个“id”。到目前为止,我的功能是,

const restructure = obj => {
Object.fromEntries = arr => Object.assign({}, ...Array.from(arr, ([k, v]) => ({ [k]: v })));
if (typeof obj !== 'object' || obj === null) {
return obj;
}
if (Array.isArray(obj)) {
return obj.map(restructure);
}
return Object.fromEntries(
Object.entries(obj).map(([key, val]) => [
keyChanges[key] || key,
restructure(val),
])
);
};

keyChanges 是一个变量,列出了如果找到新名称应该更改的内容。

const keyChanges = {
id: 'customerId',
customer: 'individual',
first_name: 'firstName',
middle_name: 'middleName',
last_name: 'lastName',
};

不幸的是,我解决这个问题的尝试总是以影响“id”的其他实例而告终。任何指点将不胜感激:)

最佳答案

我假设您有类似映射器的东西,它遍历对象数组中的每个项目。您需要做的是添加代码块,该代码块只会对 map 函数中的第一项执行。

例如:

myArrayOfObjects.map((item, index) => {
if(index == 0) {
<here goes your function to change the key from "id" to "customerId">
}
})

关于javascript - 如何仅更改对象中键的第一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61347934/

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