Основываясь на усилиях Томаса и при условии, что входная строка соответствует указанному вами формату, тогда:
function lastSunday(d) {
var d = d.replace(/(^\d{4})(\d{2})(\d{2}$)/,'$1/$2/$3');
d = new Date(d);
d.setDate(d.getDate() - d.getDay());
return d;
}
Редактировать
Если бы я написал это сейчас, я бы не зависел от объекта Date, анализирующего строку, а сделал бы это сам:
function lastSunday(s) {
var d = new Date(s.substring(0,4), s.substring(4,6) - 1, s.substring(6));
d.setDate(d.getDate() - d.getDay());
return d;
}
Несмотря на то, что формат yyyy / mm / dd правильно анализируется всеми протестированными браузерами, я считаю, что придерживаться основных методов более надежно Особенно, когда они, вероятно, более эффективны.