我有一个带苹果的客户,我有Api Controller
以Object Customer
作为参数,并使用这些新苹果更新数据库中现有的一个:
[HttpPut("Update")]
public async void Put([FromBody]Customer customer)
{
await _repository.UpdateCustomer(customer);
}
使用Javascript,我想将这些新苹果添加到客户当前的List
苹果中。阅读SO应该看起来像:
addApplesToCustomer_method: function () {
var updatedCustomer = this.currentCustomer;
Array.prototype.push.apply(updatedCustomer.apples, this.selectedApples);
$.ajax({
url: 'api/customer/update',
type: 'PUT',
contentType: "application/json",
data: JSON.stringify({
customer: updatedCustomer
}),
success: function () {
alert('success');
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Error: ' + textStatus + '\n' + errorThrown);
}
});
}
currentCustomer
是我们要更新的客户。 selectedApples
是我们要添加到现有List
个苹果客户的新Array
个苹果。
然而,由于我添加了Array.prototype.push.apply(updatedCustomer.apples, this.selectedApples)
,但上面甚至没有运行,但它也没有给我一个错误。什么都没发生。如果我回去将客户和苹果单独发送到我的控制器,它可以工作,但我不想这样做。
答案 0 :(得分:2)
使用spread
语法。
updatedCustomer.apples.push(...this.selectedApples);
Spread语法允许迭代,例如数组表达式或字符串 在零或多个参数的地方扩展(用于函数 调用)或元素(对于数组文字)是期望的,或对象 要在零个或多个键值对的位置展开的表达式 (对象文字)是预期的。
答案 1 :(得分:0)
用Array.push(object)
let objectArray = []
let apple = {
name: 'Apple',
size: 'medium'
}
let orange = {
name: 'Orange',
size: 'large'
}
// Create an initial list with apples
for (var i = 0; i < 10; i++) {
objectArray.push(apple)
}
// Now add an orange to that list
objectArray.push(orange)
// The resulting array contains 10 apples, 1 orange.
console.log(objectArray)
这里是JSFiddle:http://jsfiddle.net/j7kcjjqh/
(检查控制台以查看结果)