如何在数组中追加特定值?

时间:2015-04-04 13:00:58

标签: javascript jquery arrays angularjs

这是我的指示。我想在现有数组中附加数组特定的数组值

localStorage.getItem('albumcomments')=“[{”id“:1,”photocomment“:”sdfsdfs“}]”;

angular.module('albumlikeFeature',[]).directive('albumlikeFeature', ['$filter', '$route', function ($filter, $route) {

return {
    restrict: 'E',
    scope: {},
    templateUrl: 'app/components/album/albumlikefeature.html',
    link : function(scope, element, attrs) {

        scope.likeCount = 0;
        scope.unlikeCount = 0;


        scope.likeClick = function (dataid) {
        scope.likeCount += 1;          

        if(JSON.parse(localStorage.getItem('albumcomments'))){

                var newDataLike = [];
                 angular.forEach(localStorage.getItem('albumcomments'), function(likeCount, item){
                    console.log('test');
                    newDataLike.push({id:item.id, photocomment:item.photocomment, like:likeCount});
                });

                console.log(newDataLike);
                localStorage.setItem('albumcomments',JSON.stringify(newDataLike));

        }

      };

我的预期输出是

[{"id":1,"photocomment":"test","like":"1","unlike":"1"}

现在输出

[{"like":"["},{"like":"{"},{"like":"\""},{"like":"i"},{"like":"d"},{"like":"\""},{"like":":"},{"like":"1"},{"like":","},{"like":"\""},{"like":"p"},{"like":"h"},{"like":"o"},{"like":"t"},{"like":"o"},{"like":"c"},{"like":"o"},{"like":"m"},{"like":"m"},{"like":"e"},{"like":"n"},{"like":"t"},{"like":"\""},{"like":":"},{"like":"\""},{"like":"s"},{"like":"d"},{"like":"f"},{"like":"s"},{"like":"d"},{"like":"f"},{"like":"s"},{"like":"\""},{"like":"}"},{"like":"]"}]

3 个答案:

答案 0 :(得分:0)

localStorage.getItem('albumcomments') = JSON.parse('[{"id":1,"photocomment":"sdfsdfs"}]');

angular.module('albumlikeFeature',[]).directive('albumlikeFeature', ['$filter', '$route', function ($filter, $route) {

return {
  restrict: 'E',
  scope: {},
  templateUrl: 'app/components/album/albumlikefeature.html',
  link : function(scope, element, attrs) {

  scope.likeCount = 0;
  scope.unlikeCount = 0;


  scope.likeClick = function (dataid) {
  scope.likeCount += 1;          

  if(localStorage.getItem('albumcomments').length > 0){

    var newDataLike = [];

    $.each(localStorage.getItem('albumcomments'), function(value, key){
      $(this) = $this;

      console.log('test');

      newDataLike.push( {id: $this.id, photocomment: $this.photocomment, like: scope.likeCount} );
    });

    console.log(newDataLike);
    localStorage.setItem('albumcomments',JSON.stringify(newDataLike));

  }

};

试试

答案 1 :(得分:0)

我想你应该创建一个新数组然后你可以在迭代时推送它们:

var data = [{"id":1,"photocomment":"test"},{"id":1,"photocomment":"test1"}];
var newData = [];
$.each(data, function(i, item){
    newData.push({id:item.id, photocomment:item.photocomment, like:i, unlike:i});
});

console.log(newData);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:0)

试试这个希望它会有所帮助

    angular.module('albumlikeFeature',[]).directive('albumlikeFeature', ['$filter', '$route', function ($filter, $route) {

    return {
        restrict: 'E',
        scope: {},
        templateUrl: 'app/components/album/albumlikefeature.html',
        link : function(scope, element, attrs) {

    		scope.likeCount = 0;
    		scope.unlikeCount = 0;
    		
    		
            scope.likeClick = function (dataid) {
    		scope.likeCount += 1;          
    		
    		if(JSON.parse(localStorage.getItem('albumcomments'))){
    				
    				var newDataLike = [];
    				 angular.forEach(JSON.parse(localStorage.getItem('albumcomments')), function(likeCount, item){				
    					newDataLike.push({id:likeCount.id, photocomment:likeCount.photocomment, like:scope.likeCount,unlike:scope.unlikeCount});
    				});
    				
    				localStorage.setItem('albumcomments',JSON.stringify(newDataLike));
    		}
    		
          };
    	  
    	   scope.unlikeClick = function (dataid) {
    	   scope.unlikeCount += 1;          
    		
    		if(JSON.parse(localStorage.getItem('albumcomments'))){
    				
    				var newDataUnlike = [];
    				 angular.forEach(JSON.parse(localStorage.getItem('albumcomments')), function(i, item){
    					newDataUnlike.push({id:i.id, photocomment:i.photocomment,like:scope.likeCount,unlike:scope.unlikeCount});
    				});

    				console.log(newDataUnlike);
    				localStorage.setItem('albumcomments',JSON.stringify(newDataUnlike));
    		}
    		
          };
    	  
        }           
     }
    }]);