Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想根据键值对搜索(lodash或typescript)从“n”个对象的数组中创建一个新对象_Javascript_Arrays_Typescript_Object_Lodash - Fatal编程技术网

Javascript 我想根据键值对搜索(lodash或typescript)从“n”个对象的数组中创建一个新对象

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": &

这就是我想做的:

我有一个对象数组,它来自我们的数据库。考虑这个项目:这。下面的UsSersObj.< /P>
@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())