修改
以下问题How do I empty an array in JavaScript?没有回答这个问题,即我得到了如何设置/重置数组但这不是我的问题。我想要做的是:
问题
代码库:Angular 1.5x,lodash 4.x
似乎是一个基本问题但无法找到答案。是否可以使用JS,Angular或lodash重置数组并按照下面的示例同时设置它。根据下面的示例,除非我设置重置,否则数组将继续推送。为什么你问,例如我是否在HTML中使用UUID作为密钥,例如
HTML
<li id="{[{contactus.app_id}]}"
ng-show="view.state[item.uuid]"
ng-repeat="item in collection.items track by item.uuid">
</li>
JS(Angular)
注意:此代码有效,我也可以将$scope.view.state.length = 0;
替换为$scope.view.state = [];
,但我的问题更多的是重新设置数组,添加动态密钥并将其设置为true代码行。复杂性在动态密钥中。
$scope.view = {state:[]};
$scope.setViewState = function (id) {
// how can I collapse the following 2 lines of code into one
$scope.view.state = [];
$scope.view.state[id] = true;
};
答案 0 :(得分:1)
您可以使用计算属性在一行中执行此操作:
$scope.view.state = {[id]: true};
但是,这仅适用于最新的浏览器(Chrome,Firefox,Safari 7.1+和Edge),如果您有任何需要解析代码的构建步骤,则还需要升级以理解语法为好。
如果您需要较旧的浏览器支持(或者如果您的构建工具无法升级),那么您需要分两步完成。但是,您可以在函数中隐藏这些步骤:
function initialState(key, value) {
var result = {};
result[key] = value;
return result;
}
然后你就可以做到:
$scope.view.state = initialState(id, true);