如何在AngularJS中重写没有通用对象注入接收器的函数?

时间:2017-07-05 09:57:30

标签: angularjs codacy

我有一个功能,它工作正常,但codacy检查表明这样做是不好的做法。我知道它甚至看起来不安全,但我无法想出如何做到另一种更好的方式。

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <!-- need to assign value of ng-app to module name for automatically bootstrapping the angularjs application -->
    <div ng-app="myApp" ng-controller="mainController">
        <div ng-hide = "state"> <!-- here -->
          <p>hello</p>
        </div>
        {{ state }}
      </div>

在Icycool的建议之后,我想出了一些更容易被接受的东西。我尝试使用forEach循环,但它没有工作,所以我决定使用fori。虽然它不是完美的,但它现在要做的事情:

const a = [{ 
  a: 1, 
  b: 2 
}, { 
  a: 1, 
  c: 3 
}]

const b = a.reduce((acc, cur) => Object.assign(acc, 
  ...Object.keys(cur).map(key => ({ [key]: (acc[key] || []).concat(cur[key]) })))
, {})

console.log(b)

1 个答案:

答案 0 :(得分:1)

您可以使用递归函数简化它。

function getCount(i, items) {
  var count = 0;

  items.forEach(function(item) {
    if (item.isArray) count += getCount(i, item);
    else if (item == i) count++;
  });

  return count;
}