Javascript 搜索功能在对象数组与对象对象之间存在问题
我有一个数据库,我想从中搜索,但当制作一个更新、更大的数据库时,格式改变了。我想将新格式重新格式化为旧格式,但不知道如何进行。这是我的情况 我有一组对象:Javascript 搜索功能在对象数组与对象对象之间存在问题,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我有一个数据库,我想从中搜索,但当制作一个更新、更大的数据库时,格式改变了。我想将新格式重新格式化为旧格式,但不知道如何进行。这是我的情况 我有一组对象: let people = [{"name": "John", "country": "England", "hair": "brown"}, {"name": "Jenny", "country": "Scotland", "hair": "black"}] 新阵列如下所示: let newPeople = [{
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"}
}]
function getCountry(name) {
for (let i = 0; i < people.length; i++) {
if (name === people[i].name) {
return people[i].country;
}
}
}
我有一个搜索人物
数组的功能,其工作原理如下:
let newPeople = [{
"John": {"country": "England", "hair": "brown"},
"Jenny": {"country": "Scotland", "hair": "black"}
}]
function getCountry(name) {
for (let i = 0; i < people.length; i++) {
if (name === people[i].name) {
return people[i].country;
}
}
}
现在,在“新人”数组中,为了得到Jenny的国家,我必须写:
newPeople[0].Jenny["country"]
这是令人难以置信的复杂,特别是因为每个人都是新人[0]的一部分,而不是每个人增加1。我肯定有一个方法我可能遗漏了,但我不能使用相同的for循环,也不能通过“name”匹配搜索的词,因为对象不再具有旧的“people”数组中的“name”属性
我是否可以简单地将新数组转换为旧格式的数组?如果是这样,我将对整个数据库执行此操作,而不是使用新的格式。如果要迭代,可以使用
Object.keys(newPeople)
。它返回一个包含“newPeople”键的数组。在这种情况下,数组将是[“John”,“Jenny”]
但是为了实现您的目标,您可以(如果响应始终是一个只有一个对象的数组,如您发布的对象),只需:
如果数组不总是包含单个对象中的所有名称,则必须像以前一样进行迭代:
function getCountry(name) {
for (let i = 0; i < people.length; i++) {
if (name in people[i]) {
return people[i][name].country;
}
}
}
函数getCountry(名称){
for(设i=0;i
为什么要为新人设置数组?是否给定?这应该将newPeople
转换为旧的数组格式Object.keys(newPeople[0]).map(k=>({name:k,…newPeople[0][k]})
@NinaScholznewPeople
数组是people
数组的“新”版本@哈萨尼姆非常感谢你!!这工作绝对完美。我不知道如何使用Object.key或.map函数!我从来没有想到我在StackOverflow的第一次经历会如此迅速地有帮助。我将使用它,并确保对使用的每个部分进行研究,以便在以后需要时可以自己实现它。再次感谢你!我懂了!我现在了解到,newPeople[0][name]
在向“Jenny”
等声明name
后,将返回该对象!非常感谢。@hassaniam向我展示了一个快速的重新格式化函数,可以将它从一个对象的对象更改为(对我来说)更熟悉的对象数组。这非常有帮助。