DoneJS StealJS jQuery++ FuncUnit DocumentJS
5.33.3
6.0.0 4.3.0 3.14.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-define
      • can-define/list/list
        • events
          • add
          • length
          • propertyName
          • remove
        • prototype
          • assign
          • assignDeep
          • concat
          • every
          • filter
          • forEach
          • get
          • includes
          • indexOf
          • join
          • lastIndexOf
          • map
          • pop
          • push
          • reduce
          • reduceRight
          • reverse
          • serialize
          • set
          • shift
          • slice
          • some
          • sort
          • splice
          • unshift
          • update
          • updateDeep
          • *
          • #
        • static
          • extend
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-compat
      • can-map-define
      • can-observable-array
      • can-observable-object
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Views
      • can-attribute-observable
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-element
      • can-stache-route-helpers
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • steal-stache
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-tag
      • can-fixture
      • can-fixture-socket
      • can-local-store
      • can-memory-store
      • can-ndjson-stream
      • can-query-logic
      • can-realtime-rest-model
      • can-rest-model
      • can-set-legacy
      • can-super-model
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
      • can-string
      • can-string-to-any
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
      • can-type
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

updateDeep

  • Edit on GitHub

Recursively updates a list with new values or new property values.

list.updateDeep(newItems)

Similar to .update(), .updateDeep() will overwrite values within list with values from newItems. Where update() will replace values or properties one level deep, .updateDeep() will overwrite values or properties on objects and lists recursively.

The following will:

  • remove payal from people,
  • set justin's name to "JUSTIN", and
  • remove justin's age property:
import {DefineMap, DefineList} from "can";

const justin = new DefineMap({name: "Justin", age: 35}),
      payal = new DefineMap({name: "Payal", age: 35});

const people = new DefineList([justin, payal]);

people.updateDeep([
  {name: "JUSTIN"}
]);

console.log( justin.serialize(), payal.serialize() );
//-> {name: "JUSTIN"}, {age: 35, name: "Payal"}
console.log( people.serialize() ) //-> [
//   {name: "JUSTIN"}
// ]

Use .assignDeep() if you want recursive updating that doesn't remove properties. Use can-diff/merge-deep/merge-deep if you want recursive updating that is identity aware.

Parameters

  1. newItems {Array|Object}:

    A list or array of values, or an object of property values. If an object is passed, the properties of the list will be updated with the values in newItems.

Returns

{can-define/list/list}:

The list instance.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 5.33.3.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news