2014-09-25 170 views
0

我有這樣JavaScript數組對象值包含另一個數組值

"chapters":[ 
      { 
       "_id": "5422c6ba0f6303ba22720e14", 
       "chapter_name": "Morbi imperdiet libero sed.", 
       "sub_title": "Nam id elit tincidunt amet.", 
       "mystatus": "noidea" 

      }, 
      { 
       "_id": "5422bd0d5cb79ae6205b2f6a", 
       "chapter_name": "Donec id accumsan volutpat.", 
       "sub_title": "Cras volutpat velit nullam.", 
       "mystatus": "noidea" 

      }, 
      { 
       "_id": "5423ea5f17c83ad41da1765e", 
       "chapter_name": "Donec id accumsan volutpat.", 
       "sub_title": "Cras volutpat velit nullam.", 
       "mystatus": "noidea" 

      } 

     ], 

一個數組,我有另外一個

"currentstat": [ 
     "5423ea5f17c83ad41da1765e", 
     "5422c6ba0f6303ba22720e14", 
     "5422bd0d5cb79ae6205b2f6a" 
    ], 

我要檢查在chapters._id任何currentstat數組值包含的內容。

我試過這樣。

for (var i = 0; i < chapters.length; i++) { 
    var attenId = currentstat.toString(); 
    if (attenId.indexOf(chapters[i]._id) != -1) { 
    } 
} 

我不能沒有

VAR attenId = currentstat.toString得到的結果();

我還需要一件事。

我需要將這些status數組值分配給相應的chapters數組,根據currentstat數組值。

status: [ 'passed', 'passed', 'attending'] 

整個代碼是這樣的

for (var i = 0; i < chapters.length; i++) { 
    var attenId = currentstat.toString(); 
    if (attenId.indexOf(chapters[i]._id) != -1) { 
    allChapters[i].mystatus = (status[i]) ? status[i] : 0; 
    } 
} 

,但價值不分配給相應的_id請幫幫忙!

回答

4

例:

var currentstat = ["1","2","3"]; 
var chapters = [{_id:"2"}, {_id:"4"}, {_id:"6"}]; 

var objects = chapters.filter(function(chapter) { 
    return ~currentstat.indexOf(chapter._id); 
}); 

只需用數據替換這些陣列和objects將包含有相同的ID(在此特定示例中它是[{_id:"2"}]對象

1

最粗略的方法是2爲循環在另一個內部:

for (var i = 0; i < currentstat.length; i++) { 
    for (var j = 0; j < chapters.length; j++) { 
     if (currentstat[i] === chapters[j]._id){ 
      alert('found it at: ' + i + ' ' + currentstat[i]); 
     } 
    } 
} 

檢查this fiddle

有點不太粗的方法是:

for (var i = 0; i < chapters.length; i++) { 
    if (currentstat.indexOf(chapters[i]._id) >= 0) { 
     alert('found ' + currentstat[i] + ' at index ' + i); 
    } 
} 

fiddle here.

+0

使用'indexOf'很可能會比遍歷每個迭代更好。 – 2014-09-25 11:24:01

+0

你是對的。 – avidenic 2014-09-25 11:27:34

+0

但是,您需要將其應用於不屬於'currentstat'的'章節'... – Bergi 2014-09-25 11:30:53

相關問題