首頁  >  問答  >  主體

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到的值,而不會將所有值添加到一個數組中去!
求大神幫忙!

滿天的星座滿天的星座2672 天前682

全部回覆(5)我來回復

  • typecho

    typecho2017-06-26 10:56:04

    if(arry[i].selected=true)

    這裡錯了,寫成了賦值。

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-26 10:56:04

    一個=是賦值,兩個=是比較,樓主下次寫的時候細心點,有時候邏輯沒問題,但就是運作不起來,那麼可能是哪個位置語法有問題了。

    回覆
    0
  • typecho

    typecho2017-06-26 10:56:04

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

    回覆
    0
  • typecho

    typecho2017-06-26 10:56:04

    雷雷

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:56:04

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

    回覆
    0
  • 取消回覆