【发布时间】:2018-12-12 08:51:47
【问题描述】:
我有一个我想从中搜索的数据库,但是在创建一个更新、更大的数据库时,格式发生了变化。我想将新格式重新格式化为旧格式,但不知道如何。这是我的情况。
我有这个对象数组:
let people = [{"name": "John", "country": "England", "hair": "brown"},
{"name": "Jenny", "country": "Scotland", "hair": "black"}]
新数组如下所示:
let newPeople = [{
"John": {"country": "England", "hair": "brown"},
"Jenny": {"country": "Scotland", "hair": "black"}
}]
我有一个 people 数组的搜索功能,其工作原理如下:
function getCountry(name) {
for (let i = 0; i < people.length; i++) {
if (name === people[i].name) {
return people[i].country;
}
}
}
完美运行的地方:
getCountry("Jenny") // returns "Scotland"
现在,在“newPeople”数组中,要获取 Jenny 的国家,我必须写:
newPeople[0].Jenny["country"]
这非常令人费解,尤其是因为每个人都是 newPeople[0] 的一部分,而不是每人增加 1 个。而且我确定我可能缺少一种方法,但是我不能使用相同的 for 循环,也不能通过“名称”匹配搜索的词,因为对象没有“名称”属性不再来自旧的“人”数组。
无论如何我可以简单地将新数组转换为具有旧格式的数组吗?如果是这样,我将对整个数据库执行此操作,而不是使用新格式。
【问题讨论】:
-
为什么你有一个
newPeople的数组?是给的吗? -
这应该将
newPeople转换为旧数组格式Object.keys(newPeople[0]).map(k => ({name : k, ...newPeople[0][k]})); -
@NinaScholz
newPeople数组是people数组的“新”版本! -
@HassanImam 非常感谢!!这绝对完美。我不知道如何使用 Object.key 和 .map 函数!我从来没有想过我在 StackOverflow 的第一次体验会这么快有帮助。我将使用它,并确保研究使用的每个部分,以便以后如果需要我可以自己实现它。再次感谢您!
标签: javascript arrays javascript-objects