一个小算法的分析

半城伤御伤魂 提交于 2019-12-28 00:42:35

JavaScript对象有id和all两个属性,

问题1: 找到数组a中元素与数组b中元素id属性不同的元素
1 function f1(a,b) {
2     return _.filter(a, function(ai){
3         var bio = _.find(b, function(bi){
4             return ai.id == bi.id;
5         });
6         return !bio
7     });
8 }

问题2: 找到数组a中元素的all属性为false的元素

1 function f2(a) {
2     return _.filter(a, function(ai) {
3         return !ai.all;
4     });
5 }

问题3: 找到数组a中元素与数组b中元素id属性不同,且对应b中all属性为false的元素

 1 function f(a,b) {
 2     return _.filter(a, function(ai){
 3         var bio = _.find(b, function(bi){
 4             return ai.id == bi.id;
 5         });
 6         if(!bio) {
 7             return true;
 8         }
 9         return !bio.all;
10     });
11 }

给定a、b、c是三个不同的对象数组,

1 a=[{id:1, all:true}, {id:2, all:true}, {id:3, all:true}];
2 b=[{id:1, all:true}, {id:4, all:true}, {id:5, all:true}];
3 c=[{id:1, all:false}, {id:4, all:true}, {id:5, all:true}];

结果如下:

1 f1(a,b) = [{id:2, all:true}, {id:3, all:true}]
2 f2(b) = []
3 f2(c) = [{id:1, all:false}]
4 f(a, b) = [{id:1, all:true}, {id:2, all:true}, {id:3, all:true}]
5 f(a, c) = [{id:2, all:true}, {id:3, all:true}]

 

 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!