2014-09-25 136 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

相关问题