JavaScript、angular2中如何从for循环的值中重组一个数组
问题描述
比如我有一个数组
let arry = [{'selected':true,'name':'Tony'},{'selected':false,'name':'Lily'},{'selected':true,'name':'Liyang'}];
JS中我使用for循环如何获取仅selected为true的值?
for(var i=0;i<arry.length;i++){ if(arry[i].selected=true){console.log(arry[i].name) }}
以上的for中国,打印出来的依然是3个字符串。而我仅需要['Tony','Liyang']这样的格式,我该如何才能获取?之前试过使用push添加到一个空数组中,但是push中每for一次就仅push当前for到的值,而并不会将所有值添加到一个数组中去!求大神帮帮忙!
问题解答
回答1:if(arry[i].selected=true)
这里错了,写成了赋值。
回答2:一个=是赋值,两个=是比较,楼主下次写的时候细心点,有时候逻辑没问题,但就是运行不起来,那么可能是哪个位置语法有问题了。
回答3:直接用arry[i].selected判定就好了,为啥要判断值是否相等啊?
回答4:var newArr = []arry.forEach(function(value){if(value.selected) newArr.push(value.name)})回答5:
用 filter 和 map 处理多方便的
let arry = [ { 'selected': true, 'name': 'Tony' }, { 'selected': false, 'name': 'Lily' }, { 'selected': true, 'name': 'Liyang' }];let selected = arry.filter(m => m.selected);console.log('selected', selected);let names = selected.map(m => m.name);console.log('names', names);// 连起来let result = arry .filter(m => m.selected) .map(m => m.name);console.log('result', result);
相关文章:
1. mysql - 查询字段做了索引为什么不起效,还有查询一个月的时候数据都是全部出来的,如果分拆3次的话就没问题,为什么呢。2. DADB.class.php文件的代码怎么写3. mysql sql where id in(25,12,87) 结果集如何用按照 25 12 87排序?4. javascript - 在js for in 循环中,使用数组的push方法获取对象的属性,结果却未改变数组5. 腾讯地图小程序SDK,success返回的数据无法取出6. 就一台服务器,mysql数据库想实现自动备份,如何设计?7. Mysql 关于 FOUND_ROWS() 和 ROW_COUNT() 函数8. Win8资源管理器总是卡死该咋办?9. mysql - 请教一条sql10. javascript - h5分享链接到qq或者微信时有一个缩略图还有一些说明文字,这个要怎么去修改里面的图片和内容?