jQuery 有一個 $.extend 功能我覺得相當好用,假設你有兩個 object,{'name': 'chan', 'sport': 'basketball'}
,新的屬性是 {'sort': 'baseball'}
, 透過 $.extend(object1, object2)
可以得到 {'name': 'chan', 'sport': 'baseball'}
,今天要在三個語言實現這個功能,但我要另外加一個內容是,如果新的內容是空字串就不覆蓋。
PHP
| <?php |
| |
| $data = [ |
| 'name' => 'chan', |
| 'sport' => 'basketball' |
| ]; |
| $newData = [ |
| 'name' => '', |
| 'sport' => 'baseball' |
| ]; |
| $mergeObject = function($object1, $object2) { |
| return json_encode( |
| array_merge( |
| $object1, |
| array_filter( |
| $object2, |
| function($item) { |
| return $item != ''; |
| } |
| ) |
| ) |
| ); |
| }; |
| |
| echo $mergeObject($data, $newData); |
python
| |
| |
| import json |
| |
| data = { |
| 'name': 'chan', |
| 'sport': 'basketball' |
| } |
| new_data = { |
| 'name': '', |
| 'sport': 'baseball' |
| } |
| |
| |
| def merge_object(object1, object2): |
| x = object1.copy() |
| n = {} |
| |
| for key, value in object2.items(): |
| if value != '': |
| n[key] = value |
| |
| x.update(n) |
| |
| return json.dumps(x) |
| |
| |
| print(merge_object(data, new_data)) |
node.js
| let data = { |
| 'name': 'chan', |
| 'sport': 'basketball' |
| }; |
| let newData = { |
| 'name': '', |
| 'sport': 'baseball' |
| }; |
| let objectFilter = (object1, object2) => { |
| let n = {}; |
| |
| for (let i in object2) { |
| let value = object2[i]; |
| |
| if (value !== '') { |
| n[i] = value; |
| } |
| } |
| |
| return JSON.stringify(Object.assign(object1, n)); |
| }; |
| |
| console.log(objectFilter(data, newData)); |
沒有留言:
張貼留言