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到的值,而并不会将所有值添加到一个数组中去!
求大神帮帮忙!

阅读 7.7k
5 个回答
if(arry[i].selected=true)

这里错了,写成了赋值。

一个=是赋值,两个=是比较,楼主下次写的时候细心点,有时候逻辑没问题,但就是运行不起来,那么可能是哪个位置语法有问题了。

直接用arry[i].selected判定就好了,为啥要判断值是否相等啊?

var newArr = []
arry.forEach(function(value){if(value.selected) newArr.push(value.name)})

filtermap 处理多方便的

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);

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题