在给定的对象数组中搜索键并替换该值;

时间:2014-08-06 02:18:11

标签: javascript jquery angularjs underscore.js arrays

实施多重排序功能;需要切换包含排序字段名和排序顺序的数组;

实施例

单击按名称排序:

[{"sortKey":"name","sortValue":"desc"}]

再次点击按名称排序:

[{"sortKey":"name","sortValue":"asc"}]

点击按年龄排序:

[{"sortKey":"name","sortValue":"asc"},{"sortKey":"age","sortValue":"desc"} ]

再次点击按名称排序:

[{"sortKey":"name","sortValue":"desc"},{"sortKey":"age","sortValue":"desc"} ]

DEMO

if (checkIfObjectExists($scope.sortList, sortingObject)) {
    if (!$scope.sortList.hasOwnProperty(sortingObject.sortType)) {
        console.log($scope.sortList);
        // replace the value for the key
    }
} else {
    $scope.sortList.push(sortingObject);
}

1 个答案:

答案 0 :(得分:1)

我在你的实现中改变了一些东西。问题是你在检查整个对象是否不相同然后推入数组。但是如果sorKeysortValue相同,那么您需要的是什么。

DEMO

将您的功能checkIfObjectExists更改为updateArray

function updateArray(array, newObject) {
    var i = 0;
    for (i = 0; i < array.length; i++) {
      var object = array[i];
      if (object.sortKey == newObject.sortKey) {
        object.sortValue= (object.sortValue==='asc')?'desc':'asc';
        return;
      }
    }
    array.push(newObject);
  }

在打电话的时候,我会在$scope.clickMe中这样打电话。

updateArray($scope.sortList, sortingObject);