Javascript 通过比较两个数组生成数组并动态添加密钥

Javascript 通过比较两个数组生成数组并动态添加密钥,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我的应用程序从API接收数据并将其保存在$scope.newz中 书签数据从本地存储加载 我正在比较两个数组的contentId值,$scope.newz和$scope.bookmarkData 我不知道如何仅为匹配的数组项保存书签状态:true 最后,将匹配的记录添加到$scope.AllnewsList 这是我的密码 if(data.Status.ResponseCode == 200) { $("#fetchnews").hide(); // $("#nodata"

我的应用程序从API接收数据并将其保存在
$scope.newz

书签数据
从本地存储加载

我正在比较两个数组的contentId值,$scope.newz$scope.bookmarkData

我不知道如何仅为匹配的数组项保存
书签状态:true

最后,将匹配的记录添加到
$scope.AllnewsList

这是我的密码

if(data.Status.ResponseCode == 200)
  { 
    $("#fetchnews").hide();

    // $("#nodata").show();

    $("#sError").hide();

    //$scope.AllnewsList =  data.contents;

    $scope.newz = data.contents; 
    $scope.bookmarkData = JSON.parse(window.localStorage.getItem('bookmark'));

    for (var i=0; i < $scope.newz.length; i++)
    {
      for (var j=0; j < $scope.bookmarkData.data.length; j++) 
      {
        if ($scope.newz[i].ContentId == $scope.bookmarkData.data[j].ContentId)
          {
            // console.log($scope.newz[i].ContentId);
            $scope.bookmarkstate == true; 
          }
          else
          {
            $scope.bookmarkstate == false;
          }
      }
    }
    $scope.AllnewsList = $scope.newz;
  }
if(data.Status.ResponseCode==200)
{ 
$(“#fetchnews”).hide();
//$(“#nodata”).show();
$(“sError”).hide();
//$scope.AllnewsList=data.contents;
$scope.newz=data.contents;
$scope.bookmarkData=JSON.parse(window.localStorage.getItem('bookmark');
对于(变量i=0;i<$scope.newz.length;i++)
{
对于(var j=0;j<$scope.bookmarkData.data.length;j++)
{
if($scope.newz[i].ContentId==$scope.bookmarkData.data[j].ContentId)
{
//log($scope.newz[i].ContentId);
$scope.bookmarkstate==true;
}
其他的
{
$scope.bookmarkstate==false;
}
}
}
$scope.AllnewsList=$scope.newz;
}

如果我理解正确,那么无论您是否至少有一个书签,您都在为每个
newz
注册

如果您想这样做,我建议将
$scope.bookmarkstate
设置为与
newz
数组大小相同的数组

这样,如果
“newz”
数组中的对应单元格是否包含书签,则可以在其每个单元格中注册

if(data.Status.ResponseCode == 200)
    { 
       $scope.bookmarkstate = [];
       $("#fetchnews").hide();
       $("#sError").hide();
      $scope.newz = data.contents; 
      $scope.bookmarkData = JSON.parse(window.localStorage.getItem('bookmark'));
       for (var i=0; i < $scope.newz.length; i++)
        {
          for (var j=0; j < $scope.bookmarkData.data.length; j++) 
          {
              if ($scope.newz[i].ContentId == $scope.bookmarkData.data[j].ContentId)
               {
                 $scope.bookmarkstate[i] == true; 
              }
              else
              {

                 $scope.bookmarkstate[i] == false;
              }
          }
      }
       $scope.AllnewsList = $scope.newz;
   }
if(data.Status.ResponseCode==200)
{ 
$scope.bookmarkstate=[];
$(“#fetchnews”).hide();
$(“sError”).hide();
$scope.newz=data.contents;
$scope.bookmarkData=JSON.parse(window.localStorage.getItem('bookmark');
对于(变量i=0;i<$scope.newz.length;i++)
{
对于(var j=0;j<$scope.bookmarkData.data.length;j++)
{
if($scope.newz[i].ContentId==$scope.bookmarkData.data[j].ContentId)
{
$scope.bookmarkstate[i]==true;
}
其他的
{
$scope.bookmarkstate[i]==false;
}
}
}
$scope.AllnewsList=$scope.newz;
}
让我知道你是怎么做到的。
干杯。

如果我理解正确,无论您是否至少有一个书签,您都希望注册每个
newz

如果您想这样做,我建议将
$scope.bookmarkstate
设置为与
newz
数组大小相同的数组

这样,如果
“newz”
数组中的对应单元格是否包含书签,则可以在其每个单元格中注册

if(data.Status.ResponseCode == 200)
    { 
       $scope.bookmarkstate = [];
       $("#fetchnews").hide();
       $("#sError").hide();
      $scope.newz = data.contents; 
      $scope.bookmarkData = JSON.parse(window.localStorage.getItem('bookmark'));
       for (var i=0; i < $scope.newz.length; i++)
        {
          for (var j=0; j < $scope.bookmarkData.data.length; j++) 
          {
              if ($scope.newz[i].ContentId == $scope.bookmarkData.data[j].ContentId)
               {
                 $scope.bookmarkstate[i] == true; 
              }
              else
              {

                 $scope.bookmarkstate[i] == false;
              }
          }
      }
       $scope.AllnewsList = $scope.newz;
   }
if(data.Status.ResponseCode==200)
{ 
$scope.bookmarkstate=[];
$(“#fetchnews”).hide();
$(“sError”).hide();
$scope.newz=data.contents;
$scope.bookmarkData=JSON.parse(window.localStorage.getItem('bookmark');
对于(变量i=0;i<$scope.newz.length;i++)
{
对于(var j=0;j<$scope.bookmarkData.data.length;j++)
{
if($scope.newz[i].ContentId==$scope.bookmarkData.data[j].ContentId)
{
$scope.bookmarkstate[i]==true;
}
其他的
{
$scope.bookmarkstate[i]==false;
}
}
}
$scope.AllnewsList=$scope.newz;
}
让我知道你是怎么做到的。
干杯。

假设您在评论中提到的键和动态数据,我用以下方式定义了您的数组

如果我误解了你的问题,请纠正我

var newz=[{contentId:1,来源:'demoSrc1',标题:'title1'},
{contentId:2,来源:'demoSrc2',标题:'title2'},
{contentId:3,来源:'demoSrc3',标题:'title3'},
{contentId:4,来源:'demoSrc4',标题:'title4'},
{contentId:5,来源:'demoSrc5',标题:'title5'},
{contentId:6,来源:'demoSrc6',标题:'title6'},
{contentId:7,来源:'demoSrc7',标题:'title7'},
{contentId:8,来源:'demoSrc8',标题:'title8'}];
//为了简单起见,我静态地定义了newz。
var bookmarkData=[{contentId:1,来源:'demoSrc1',标题:'title1'},
{contentId:4,来源:'demoSrc4',标题:'title4'},
{contentId:6,来源:'demoSrc6',标题:'title6'},
{contentId:8,来源:'demoSrc8',标题:'title8'}];
//类似地,id静态地定义了书签数据。
var AllnewsList=[];
对于(变量i=0;iconsole.log(AllnewsList)假设您在注释中提到的键,并假设动态数据,我用以下方式定义了您的数组

如果我误解了你的问题,请纠正我

var newz=[{contentId:1,来源:'demoSrc1',标题:'title1'},
{contentId:2,来源:'demoSrc2',标题:'title2'},
{contentId:3,来源:'demoSrc3',标题:'title3'},
{contentId:4,来源:'demoSrc4',标题:'title4'},
{contentId:5,来源:'demoSrc5',标题:'title5'},
{contentId:6,来源:'demoSrc6',标题:'title6'},
{contentId:7,来源:'demoSrc7',标题:'title7'},
{内容