我正在尝试创建一个像这个“价格”的对象结构:{“minPrice”:1000,“maxPrice”:10000},来自URL中传递的点国家(price.minPrice = 4000)。 “价格”可以是从符号的第一部分传递的任何值。
我使用下面的代码,但它不会创建所需的出来。此外,当我更新值时,如果应返回“price”:{“minPrice”:updatedvalue,“maxPrice”:updatedvalue} not {“minPrice”:updatedvalue}或{“maxPrice”:updatedvalue}
function getUrlDotNotation(key, value) {
var arr = key.split('.'),
var label = arr[0],
queryParams = {};
for (var i = 0; i < arr.length - 1; i++) {
vm.queryParams = vm.queryParams[arr[i]] = {};
}
vm.queryParams[arr[arr.length - 1]] = value;
return vm.queryParams;
}
$scope.$watch('vm.modelMin', function onSliderMinChange(newValue, oldValue) {
if (isSearchResultsPage) {
if (newValue !== oldValue && !_.isNaN(newValue) && !_.isNaN(oldValue)) {
getUrlDotNotation(vm.firstHandleBackendVar, vm.options[newValue].value);
}
}
});
$scope.$watch('vm.modelMax', function onSliderMaxChange(newValue, oldValue) {
if (isSearchResultsPage) {
if (newValue !== oldValue && !_.isNaN(newValue) && !_.isNaN(oldValue)) {
getUrlDotNotation(vm.secondHandleBackendVar, vm.options[newValue].value);
}
}
});
答案 0 :(得分:0)
问题是你在每次迭代时都会覆盖vm.queryParams
,而且#34;滑动&#34;指针应该是一个单独的变量,例如
function makeObject(key, value) {
let
obj = {},
o = obj,
keys = key.split('.'),
last = keys.pop();
for (let k of keys)
o = o[k] = {};
o[last] = value;
return obj;
}
console.log(makeObject('foo.bar.baz', 42))
&#13;