首页 > 解决方案 > Ajax如何通过find方法在对象数组中查找内容

问题描述

在后端PHP中,我在循环中定义了这个:

 foreach ( $data as $res ){
$approved[ ]        = [ 'id' => $count, 'title' => "some title" ];
$count++;$title=...
)

然后创建最终列表:

$list[ ] = [ 'list' => 'approved', 'values' => $approved ];
return ['list' => $list ];

javascript中,我通过 ajax 调用得到这些结果:

this.myoutput = {};
    this.http.get('backend_url).then(data => {
      let result = this.helper.isJson( data.response ) || [ ];
      console.log(result);

      this.myoutput.approved   = result.list.find( item => item.list === 'approved' );

      console.log(this.myoutput.approved);

    })

第一个console.log(result);给了我所有的数据,比如:

list: (1) […]

0: {…}
​​​
list: "approved"
​​​
values: (13) […]
​​​​
0: Object { id: "1", title: "aaa" }
​​​​
1: Object { id: "2", title: "bbb" }
​​​​
2: Object { id: "3", title: "ccc" }
​​​

console.log(this.myoutput.approved);给了我未定义的。我在这里做错了什么吗?

标签: javascriptphpajax

解决方案


保存数组值的键名为values,而不是list。所以这应该工作:

this.myoutput = {};
    this.http.get('backend_url).then(data => {
      let result = this.helper.isJson( data.response ) || [ ];
      console.log(result);

      this.myoutput.approved   = result.values.find( item => item.list === 'approved' );

      console.log(this.myoutput.approved);

    })

但是你想找到什么?如果您检查 values 数组,它包含idand title,而不是list? 所以要在你的数组中找到一个项目,比如:

this.myoutput.approved   = result.values.find( item => item.id === "3" );

对我来说更有意义。请注意,如果没有找到,该find()方法确实会undefined按照规范返回:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

祝你好运!


推荐阅读