【问题标题】:How to add and delete an object in json array based on events (cursor.observeChanges)如何根据事件在json数组中添加和删除对象(cursor.observeChanges)
【发布时间】:2017-07-19 10:39:47
【问题描述】:

我正在使用 cursor.observechange,这样每当添加记录时,它都会在 UI 上通知。 记录类型: {"ref":"100","status":"inprogress"} 我有一个空数组

var arr=[];

当我需要检查状态是否正在进行中并且 ref 不存在于 arr[] 中的任何对象中时。如果是,那么我需要将其推送到 arr

arr.push(obj);

如果该状态是完整的并且如果 ref 已经存在于 arr[] 中,那么我需要从 arr[] 中删除它 下面是我试过的

var arr = [];
function addObject(obj){
       if(!arr.some(function(el){return (el.ref === obj.ref)}))
            {
                arr.push(obj);
            }
         else if{
                arr.slice(el);
                }

    }
    var cursor = TransactionDetails.find({ });
    cursor.observeChanges({
            added: function(id, object) {
              if (object.status == "incomplete") {   
                    addObject(object);
                    Notification.error("added");
                }
                    else if(object.status == "complete" {

                    addObject(object);
                    Notification.error("modified");

                }
       }

        });

但这不起作用。我们如何根据该条件添加和删除。任何帮助。谢谢!

【问题讨论】:

    标签: javascript angularjs arrays json meteor


    【解决方案1】:

    您可以使用函数从数组arr 中删除对象。

    它使用Array#findIndex

    function removeObject(obj) {
        var index = arr.findIndex(o => o.ref === obj.ref);
    
        if (index !== -1) {
            arr.splice(index, 1);
        }
    }
    

    或者一个带有Array#some的ES5提案

    function removeObject(obj) {
        function getIndex(el, i) {
            if (el.ref === obj.ref) {
                index = i;
                return true;
            }
        }
    
        var index;
    
        if (arr.some(getIndex)) {
            arr.splice(index, 1);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2015-03-05
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多