我的目标是创造这样的东西
$rootScope.customMarkers = [
{address: "1600 pennsylvania ave, washington DC", "class": "my1"},
{address: "600 pennsylvania ave, washington DC", "class": "my2"},
];
以下是我的代码的一部分,但这不起作用
for (var i = 0; i < cart.length; i++) {
$rootScope.customMarkers = [{
address: cart[i].address,
"class": cart[i].class,
}];
}
有人能给我一些线索或者只是给我一些关键词吗?
答案 0 :(得分:4)
由于您必须将push个对象添加到数组中,因此此代码无效:
$rootScope.customMarkers = [];
for (var i = 0; i < cart.length; i++) {
$rootScope.customMarkers.push({
address: cart[i].address,
"class": cart[i].class,
});
}
答案 1 :(得分:4)
您的当前代码在每次循环迭代时使用仅包含一个条目的新数组覆盖 $rootscope.customMarkers
。
这是map
的经典用法:
$rootScope.customMarkers = cart.map(function(entry) {
return {address: entry.address, class: entry.class};
});
...假设cart
是一个数组。如果它不是,它只是像数组一样,你可以使用Array.from
:
$rootScope.customMarkers = Array.from(cart, function(entry) {
return {address: entry.address, class: entry.class};
});
......或一个无聊的旧循环:
$rootScope.customMarkers = [];
for (var i = 0; i < cart.length; ++i) {
$rootScope.customMarkers[i] = {address: cart[i].address, class: cart[i].class};
}
附注:从ES5开始,上述class
的两种用途均有效,您不必在一个而不是另一个上加引号。如果您需要处理可能无法处理它的旧引擎,您需要在两个地方处理它:"class": entry["class"]
。
答案 2 :(得分:0)
你可以简单地使用foreach循环for angularjs
angular.forEach(cart, function(value, key) {
$rootScope.customMarkers.push({
address : value.address,
class : value.class
});
});
已经完成了。