javascript - 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);
给了我未定义的。我在这里做错了什么吗?
解决方案
保存数组值的键名为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 数组,它包含id
and 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
祝你好运!
推荐阅读
- javascript - 在 JavaScript 中更改给定颜色通道的对比度和饱和度
- python - 如何在标准化后保留我的 pandas 数据框的索引。json
- angular - Angular 无法读取未定义的属性“名称/描述”
- javascript - 在模态中通过 id 传递表单值
- css - 在 CSS 反应过滤器栏中滑动
- javascript - 有没有办法检查邮递员测试是否支持同一标题的不同格式?
- laravel - 使用 vuejs 和 laravel 登录后页面未呈现惯性
- android - 获取不在联系人列表中的短信发件人姓名?
- html - 当表格太大时,仅在第二页上打印 CSS 中的表格标题
- postgresql - 如何在 TypeORM 中使用 SUM() 和 getMany()?