代码之家  ›  专栏  ›  技术社区  ›  Green_qaue

Javascript-将对象数组添加到现有对象数组中

  •  1
  • Green_qaue  · 技术社区  · 7 年前

    我有一个顾客有苹果,我有一个 Api Controller 这需要一个 Object Customer 作为参数,并使用以下新苹果更新数据库中的现有苹果:

    [HttpPut("Update")]
        public async void Put([FromBody]Customer customer)
        {
            await _repository.UpdateCustomer(customer);
        }
    

    使用Javascript,我想将这些新苹果添加到我当前的 List 顾客的苹果。从阅读开始,它应该看起来像:

    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 是新的吗 列表 我们想为现有客户添加的苹果数量 Array 苹果。

    然而,自从我添加了 Array.prototype.push.apply(updatedCustomer.apples, this.selectedApples) 但它也没有给我一个错误。什么都没发生。如果我回去将客户和苹果分别发送给我的控制器,它会工作,但我不想这样做。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Mihai Alexandru-Ionut    7 年前

    使用 spread 语法。

    updatedCustomer.apples.push(...this.selectedApples);
    

    扩展语法允许iterable,例如数组表达式或字符串 在零个或多个参数(用于函数)的位置展开 调用)或元素(用于数组文字),或对象 要在零个或多个键值对的位置展开的表达式 (对于对象文字)应为。

        2
  •  0
  •   Coreus    7 年前

    把物体推到数组上怎么样 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)
    

    下面是JSFIDLE: http://jsfiddle.net/j7kcjjqh/

    (检查控制台以查看结果)