我有一个函数,我试图向对象添加一个新数组。我一直收到错误' target.push不是函数'。
这是我的功能
function targetChange(target, source) {
Object.keys(source).forEach(function(keys) {
for(i=0; i<source.length; i++) {
target[keys].push(source[keys]);
}
});
console.log(target);
}
数据:
source = {
BasinId: 123,
subBasinId: 45,
SubBasinName: newSubBasin
}
target = {
BasinId: (array of hundreds of ids),
subBasinId: (array of hundreds of ids),
SubBasinName: (array of hundreds of names)
}
我想在目标内部返回源代码..我想只是将新值添加到现有对象
我传入一个对象作为目标,设置如下{key:value,key:value,...}。源设置方式相同,但我似乎无法将新源添加到目标。有任何想法吗??我现在已经被困在这一段了一段时间。
答案 0 :(得分:1)
您需要检查目标属性是否为假,然后分配一个数组。然后推送值。
function targetChange(target, source) {
Object.keys(source).forEach(function(key) {
target[key] = target[key] || [];
target[key].push(source[key]);
});
}
var source = { BasinId: 123, subBasinId: 45, SubBasinName: 'newSubBasin' },
target = { BasinId: [0, 1, 2, 3, 4], subBasinId: [10, 11, 12, 13, 14], SubBasinName: ['a', 'b', 'c', 'd', 'e'] };
targetChange(target, source);
console.log(target);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:1)
您无法通过JSON
调用推送方法变化:
target[keys].push(source[keys]);
有关:
target[keys] = source[keys];
您需要删除 for 循环。
答案 2 :(得分:1)
这应该有效:
<select id="modelos" class="" name="attribute_modelos" data-attribute_name="attribute_modelos" "="" data-show_option_none="yes"><option value="">Elige una opción</option></select>
答案 3 :(得分:1)
我能够以这种方式工作:
function targetChange(target, source) {
Object.keys(source).forEach(function(key) {
for(i=0;i<source.length;i++) {
target[key][target[key].length++] = source[key][i];
}
});
}