gpt4 book ai didi

javascript - 在一个对象中获取 2 个属性时遇到问题

转载 作者:行者123 更新时间:2023-12-02 21:49:32 27 4
gpt4 key购买 nike

好吧,基本上我有一个名为 user utils 的对象,我应该向其中添加一个名为 search 的对象,该对象有两个名为 byName 和 byCountry 的属性。如果我在第二个注释被注释的情况下运行第一个注释,它可以正常工作,但是当我尝试在没有第二个注释的情况下运行第一个注释时,它会显示“TypeError:userUtils.search.byName 不是函数”。如果我运行第二个,即使第一个没有注释,它也会正常运行。

userUtils.search = {
byName: function(name, fuzzy) {
let matchedNames;
matchedNames = users.filter(function(element) {
if (fuzzy) {
return (
element.name.first.toUpperCase().startsWith(name.toUpperCase()) ||
element.name.last.toUpperCase().startsWith(name.toUpperCase())
);
}
return element.name.first.startsWith(name) || element.name.last.startsWith(name);
});
return matchedNames;
}
};
userUtils.search = {
byCountry: function(...args) {
let argArray = args;
let matchedCountries = [];
let count = 0;
for (let i = 0; i < argArray.length; i++) {
for (let j = 0; j < users.length; j++) {
if (argArray[i] === users[j].address.country) {
matchedCountries[count] = users[j];
count++;
}
}
}
return matchedCountries;
}
};

最佳答案

您每次都在重新声明“userUtils.search”的定义。我对您的建议是首先声明“userUtils.search”是什么,然后从它的子项开始。

userUtils.search = {};

userUtils.search.byName = function(name, fuzzy) {
let matchedNames;

matchedNames = users.filter(function(element) {
if (fuzzy) {
return (
element.name.first.toUpperCase().startsWith(name.toUpperCase())
|| element.name.last.toUpperCase().startsWith(name.toUpperCase())
);
}
return element.name.first.startsWith(name) || element.name.last.startsWith(name);
});

return matchedNames;
};

userUtils.search.byCountry = function(args) {
let argArray = args,
matchedCountries = [],
count = 0;

for (let i = 0; i < argArray.length; i++) {
for (let j = 0; j < users.length; j++) {
if (argArray[i] === users[j].address.country) {
matchedCountries[count] = users[j];
count++;
}
}
}

return matchedCountries;
};

说到这里,您是否考虑过使用 Array.push() 代替“byCountry”函数中的“count”?

示例:

for (let i = 0; i < argArray.length; i++) {
for (let j = 0; j < users.length; j++) {
if (argArray[i] === users[j].address.country) {
matchedCountries.push( users[j] );
}
}
}

关于javascript - 在一个对象中获取 2 个属性时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160631/

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