Javascript 我想根据键值对搜索(lodash或typescript)从“n”个对象的数组中创建一个新对象
这就是我想做的: 我有一个对象数组,它来自我们的数据库。考虑这个项目:这。下面的UsSersObj.< /P>Javascript 我想根据键值对搜索(lodash或typescript)从“n”个对象的数组中创建一个新对象,javascript,arrays,typescript,object,lodash,Javascript,Arrays,Typescript,Object,Lodash,这就是我想做的: 我有一个对象数组,它来自我们的数据库。考虑这个项目:这。下面的UsSersObj.< /P> @Input() inlinetext: string; <<-- This is the <input> field from the UI public usersObj: string[]; <<-- This is the usersObj type definition [ { "fname": &
@Input() inlinetext: string; <<-- This is the <input> field from the UI
public usersObj: string[]; <<-- This is the usersObj type definition
[
{
"fname": "joe",
"lname": "jones",
"email: "joe@joe.com"
},{
"fname": "pete",
"lname": "daniels",
"email: "pete@pete.com"
},{
"fname": "peter",
"lname": "stephens",
"email: "peter@peter.com"
},{
"fname": "mary",
"lname": "franklin",
"email: "mary@mary.com"
},{
"fname": "jane",
"lname": "jefferson",
"email: "jane@jane.com"
}
]
如果我键入Peter,我只会得到:
[
{
"fname": "peter",
"lname": "stephens",
"email: "peter@peter.com"
}
]
我正在得到我的结果,但结果是这个。。。
皮特的数字是价值观的关键
有人有什么建议吗
更新:
简单地使用PUSH
self.retUsers.pushvalue 您的代码中有许多错误。我敢打赌根本原因是你有fname,但请检查名字。此外,代码的格式不正确,您无法真正找出到底是什么错误 下面是一些简单的示例,说明如何做到这一点:
type UserItem = {
fname?: string;
lname?: string;
email?: string;
}
class MyClass {
public inlineText: string = ''
public usersObj: UserItem[] = []
public getUsersOnly(): UserItem[] {
let txLower = this.inlineText.toLowerCase();
return this.usersObj.filter(
({ fname }) => fname && fname.toLowerCase().startsWith(txLower)
)
}
}
const data = new MyClass();
data.usersObj = [
{
"fname": "joe",
"lname": "jones",
"email": "joe@joe.com"
}, {
"fname": "pete",
"lname": "daniels",
"email": "pete@pete.com"
}, {
"fname": "peter",
"lname": "stephens",
"email": "peter@peter.com"
}, {
"fname": "mary",
"lname": "franklin",
"email": "mary@mary.com"
}, {
"fname": "jane",
"lname": "jefferson",
"email": "jane@jane.com"
}
]
data.inlineText = 'Pet'
console.log(data.getUsersOnly())
李特温斯基,现在就试试看。谢谢。简单的解决方案在更新部分。如果您已经解决了问题,请添加您自己的答案,而不是将其添加到问题中。
[
{
"fname": "peter",
"lname": "stephens",
"email: "peter@peter.com"
}
]
_.forOwn(this.usersObj, function (value: any, key: any) {
// value is the object
// console.log('Key Value Pair lodash: ', key + ' : ' + value);
if (value.firstName !== undefined && value.lastName !== undefined) {
if (value.firstName === self.inlinetext) {
console.log('Found someone: ', key + ' : ' + value.firstName);
self.retUsers.push(value); <-- THIS IS WHAT I NEEDED TO DO (PUSH)
}
}
});
type UserItem = {
fname?: string;
lname?: string;
email?: string;
}
class MyClass {
public inlineText: string = ''
public usersObj: UserItem[] = []
public getUsersOnly(): UserItem[] {
let txLower = this.inlineText.toLowerCase();
return this.usersObj.filter(
({ fname }) => fname && fname.toLowerCase().startsWith(txLower)
)
}
}
const data = new MyClass();
data.usersObj = [
{
"fname": "joe",
"lname": "jones",
"email": "joe@joe.com"
}, {
"fname": "pete",
"lname": "daniels",
"email": "pete@pete.com"
}, {
"fname": "peter",
"lname": "stephens",
"email": "peter@peter.com"
}, {
"fname": "mary",
"lname": "franklin",
"email": "mary@mary.com"
}, {
"fname": "jane",
"lname": "jefferson",
"email": "jane@jane.com"
}
]
data.inlineText = 'Pet'
console.log(data.getUsersOnly())