首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON数组Angular 6的比较

JSON数组Angular 6的比较
EN

Stack Overflow用户
提问于 2019-08-01 11:07:03
回答 3查看 50关注 0票数 0

我有两个不同的JSON对象:

代码语言:javascript
复制
a = [{id:"1",time:"timestamp"},{id:"2",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"},{id:"5",time:"timestamp"}];
b = [{id:"1",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"}];

我想根据数组a中的匹配创建一个新数组。例如,上面示例中的输出如下所示:

代码语言:javascript
复制
c = ["1","0","1","1","0"]

其中1表示我们找到id的情况,0表示我们没有得到id的情况。

到目前为止,我尝试了以下方法:

代码语言:javascript
复制
c = [];

var val = JSON.parse(b);
if (val.length > 0) {
  val.forEach((obj) => {
    var match = a.find(({
      id
    }) => obj.id === id);
    if (!match) {
      c.push("0");
    } else {
      c.push("1");
    }
  });
}
console.log(c);

有人能告诉我我做错了什么吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-01 11:19:14

据我所知,你应该反过来做。如果要检查第一个列表的值是否在第二个列表中,则需要循环第一个列表,而不是第二个列表。

代码语言:javascript
复制
c = [];

    var val = JSON.parse(a);
    if( val.length > 0 ) {
       val.forEach((obj)=>{
         var match = b.find(({id}) => obj.id === id);
         if(!match){
           c.push("0");
         }
         else {
           c.push("1");
         }
       });
    }
    console.log(c);
票数 2
EN

Stack Overflow用户

发布于 2019-08-01 11:20:15

你需要在a中使用forEach,然后在b中找到一个元素。

代码语言:javascript
复制
var a = [{id:"1",time:"timestamp"},{id:"2",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"},{id:"5",time:"timestamp"}];
var b = [{id:"1",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"}];

var c = [];
var val = a;

if (val.length > 0) {
  val.forEach((obj) => {
    var match = b.find(({
      id
    }) => obj.id === id);
    if (!match) {
      c.push("0");
    } else {
      c.push("1");
    }
  });
}
console.log(c);

票数 1
EN

Stack Overflow用户

发布于 2019-08-01 11:22:00

使用简单的For循环;

代码语言:javascript
复制
 a = [{id:"1",time:"timestamp"},{id:"2",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"},{id:"5",time:"timestamp"}];
    b = [{id:"1",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"}];

    var arr  = [];
    var a_keys =  a.map(e => e.id);
    var b_keys =  b.map(e => e.id);
    
    for(var i=0;i<a_keys.length;i++){
        if(b_keys.indexOf(a_keys[i]) != -1){
           arr.push('1');
       }else{
       arr.push('0');
       }
    }

    console.log(arr);

代码语言:javascript
复制
a = [{id:"1",time:"timestamp"},{id:"2",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"},{id:"5",time:"timestamp"}];
    b = [{id:"1",time:"timestamp"},{id:"3",time:"timestamp"},{id:"4",time:"timestamp"}];

    var arr  = [];

    
    for(var i= 0; i < a.length; i++) {
        for(var j= 0; j < b.length; j++) {
         if(a[i].id ===  b[j].id){
          arr.push('1');
          break;
         }
         if((a[i].id !==  b[j].id) && (j === (b.length - 1))){
             arr.push('0');
         }
       }
     }

    console.log(arr);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57301312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档