javascript数组对象值包含另一个数组值

javascript array object value contains another array value

本文关键字:数组 包含 另一个 对象 javascript      更新时间:2023-09-26

我有一个类似的数组

"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数组值按照currentstat数组值分配给相应的chapters数组。

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请帮助!

示例:

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"}].

最粗糙的方法是两个循环,一个在另一个里面:

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

检查这个小提琴

一种不那么粗糙的方法是:

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

小提琴在这里。