【发布时间】:2021-04-21 12:39:45
【问题描述】:
我正在尝试解决这个问题:
在此函数中,您将获得一个对象。该对象正在存储有关键的信息。例如
{
name: 'Tom',
job: ['writing katas', 'marking'],
favouriteShop: [
"Paul's Donkey University",
"Shaq's Taxidermy Shack",
"Sam's Pet Shop"
]
};
但是,在某些情况下,键的命名非常糟糕。良好的命名约定告诉我们包含数组的键应该以复数形式命名。
此函数应返回一个 新对象,它是输入的副本,但包含包含复数数组的任何键(末尾添加了一个 's')。例如
{
name: 'Tom',
jobs: ['writing katas', 'marking'],
favouriteShops: [
"Paul's Donkey University",
"Shaq's Taxidermy Shack",
"Sam's Pet Shop"
]
}
我的尝试:
let cloneObj = Object.assign({},obj);
let arrayOfKeys = Object.keys(obj);
if(arrayOfKeys.length === 3){
let plural = arrayOfKeys[1]+"s"
cloneObj[plural] = cloneObj[arrayOfKeys[1]];
delete cloneObj[arrayOfKeys[1]];
}
return cloneObj;
这里我总是指向对象的第二个索引键位置。但是这里不是这样的,具有数组值的键被随机放置在对象中。
【问题讨论】:
-
您能具体分享一下您遇到的问题/您的尝试吗?
-
我必须解决给定对象的问题.....对象中的一个键具有数组作为值,因此我必须通过添加's'来复数该键的名称最后是键名。
-
@IbrahimAhmed 你能分享你的尝试吗?
-
let cloneObj = Object.assign({},obj); let arrayOfKeys = Object.keys(obj); if(arrayOfKeys.length === 3){ let plural = arrayOfKeys[1]+"s" cloneObj[plural] = cloneObj[arrayOfKeys[1]]; delete cloneObj[arrayOfKeys[1]]; } return cloneObj; -
我已经尝试过了,但这是一个硬代码我假设具有数组值的键始终放置在索引 1 处。但情况并非如此,具有数组值的键是随机放置的在对象中。
标签: javascript arrays json object