【发布时间】:2017-06-19 16:23:03
【问题描述】:
我正在使用点符号动态创建一个对象。这部分工作正常!我遇到的问题是我在每次迭代时都覆盖了对象。设置后,它应该只添加到对象以覆盖和替换属性。
我做错了什么?
例如price": { "minPrice": 1000, "maxPrice": 10000 } 不是 { "minPrice": value} 或 { "maxPrice": value }。
ausedSet(params, key, value);
function ausedSet(object, key, value) {
var keys = key.split('.');
for (var i = 0; i < keys.length - 1; i++) {
object = object[keys[i]] = {};
}
object[keys[keys.length - 1]] = value;
return object;
}
function getValidParams(value, key) {
if (acceptedParameters.indexOf(key) > -1) {
populateObject(vm.filterParameters, key, value);
}
}
//vm.filterParameters returns these
var acceptedParameters = [
'postCode',
'distance',
'locale',
'vehicleCategory',
'resultOrder',
'longLatCoordinates',
'price.minPrice',
'price.maxPrice',
'pagination'
]
【问题讨论】:
-
这是做什么用的?
object = object[keys[i]] = {};它最终只是创建了一个空对象,这似乎不是您想要的。 -
@DanielBeck 看到我的答案...... OP 正试图通过一系列嵌套键迭代他们的方式。该函数实际上可以工作,但最终返回的是对最里面的对象的引用,而不是原始输入。
标签: javascript arrays object