myFilter(arr1,arr2) { return arr1.filter((ele) => arr2.filter((x) => x.id === ele.id).length > 0 );}
在 chrome 瀏覽器下測試可行。

答案里為了簡潔,使用了箭頭函數。主要思路就是利用 Array 的 filter 函數。
該函數接受一個回掉函數作為參數,就是如何過濾想要的內容,滿足條件的返回為true。
它并不要求b里的id都在a里,只要是共有的id都會選中。
如果是b里的id 都在a里的話,可以嘗試這個方法。
myFilter:?function?(arr1,?arr2)?{
????console.log(1)
????var?ret?=?[];
????arr2.forEach(?(ele)?=>?{
????????let?findEle?=?arr1.find(?(x)?=>?x.service_id?===?ele.service_id);
????????//?如果在arr1中找到,添加到arr1中
????????findEle???ret.push(findEle)?:?'';
??????}
????);
????return?ret;
??}
這個思路是把b中的每一個id都在a中找一下。