var a = [{x: 1, y: 1}, {x: 2, y: 2}];
var b = cloneArray(a);
b[0].x = 5;
console.log(a);
console.log(b);
function cloneArray(arr) {
var result = [];
arr.forEach(function(value) {
if (!isPrimitive(value)) {
value = copy(value);
}
result.push(value);
});
return result;
}
function isPrimitive(value) {
// string, boolean, number
return value == null || /^[sbn]/.test(typeof value);
}
// корректно работает только для простых объектов
function copy(value) {
return JSON.parse(JSON.stringify(value));
}
window.routes = {
send_sms_path: ['GET', '/send/sms/:id']
};
<!-- где-то внутри вьюхи -->
<%= render_routes %>
# ApplicationHelper.rb
def render_routes
# Тут надо взять текущие роуты, создать из них хэш, пропусть его через JSON.generate и выплюнуть отсюда
# что-то вроде "<script>window.routes = #{JSON.generate roues};</script>"
end
angular.module('toster', [])
.controller('MainCtrl', function($scope) {
$scope.data = {
price: 0,
count: 0
};
$scope.$watchCollection('data', function(data) {
var computed = 0;
var count = parseInt(data.count, 10);
if (count) {
computed = Math.round(data.price * count / 100);
}
$scope.computed = computed;
});
});
var map = new ymaps.Map(...);
$modal.on('shown.bs.modal', function() {
map.container.fitToViewport();
});
<p>Описание: {{product.description | limitTo:25}}</p>
var tr = document.getElementsByTagName("tr"),
i = tr.length;
while (i--) {
tr[i].onclick = clickTr;
}
function clickTr(event) {
var inputs = this.getElementsByTagName('input');
for (var x = 0; x < inputs.length; x++) {
if (inputs[x] !== event.target && inputs[x].type == 'checkbox') {
inputs[x].checked = !(inputs[x].checked);
}
}
}
google.maps.event.trigger(MapInstance,'resize')