我有很多JS数组,如下所示:
q = [{
"v": "blah",
"t": "asdfsdf",
}, {
"v": "basldfasdfd",
"t": "blah",
}...]
我想为它们分配唯一的ID,然后将这些id附加到按钮上。但是,我不知道在不改变JS数组结构的情况下我应该把id放在哪里。我正在构建一个有角度的JS应用程序,在chrome dev工具中,我注意到每个元素都有一个$$hashkey
。整个阵列都有这样的属性吗?如果是这样,我该如何使用它,如果数组发生变化,它会改变吗?
我想避免进一步嵌套,也就是说,我宁愿避免做类似的事情
q = {
data: [whatever was above],
meta: { id: 234234324, ... }
};
这是唯一的方法吗?如果是这样,那么在AngularJS中,我只会做ng-repeat="item in q"
,而不是ng-repeat="item in q.data"
,对吧?
答案 0 :(得分:0)
Angular添加了$$ hashKey以跟踪您的更改,因此它知道何时需要更新DOM。 (more info)
q = { data: [whatever was above], meta: { id: 234234324, ... } };
这是唯一的方法吗?
我不知道为什么我会使用其他结构,这个很好。
如果是这样,那么在angularJS中,而不是
ng-repeat="item in q"
,我 只做ng-repeat="item in q.data"
,对吧?
是
答案 1 :(得分:0)
如果我理解你的问题,你可以使用lodash的_.indexBy()
它会将您的数组转换为可以通过键调用的对象
var q = [{
"v": "blah",
"t": "asdfsdf",
}, {
"v": "basldfasdfd",
"t": "blah",
}];
// returns an object that has the value of v as the key
console.log(_.indexBy(q, 'v'));
// returns an object that has the value of t as the key
console.log(_.indexBy(q, 't'));
以下是一个示例:http://jsfiddle.net/wnnr0hza/