[JQUERY] 어떻게 키에 의해 두 개의 개체 값을 병합
JQUERY어떻게 키에 의해 두 개의 개체 값을 병합
해결법
-
1.당신은 깊은 연장 할
당신은 깊은 연장 할
$.extend(true, {}, x, y);
jQuery.extend의 문서를 참조하십시오 ([깊이], 대상, 오브젝트 1 [objectN])
-
2.jQuery를 사용하면 중첩 된 개체가이 JSON 객체를 병합하는 데 도움이 될 것입니다 의존하지 않고 간단한 자바 스크립트 기능.
jQuery를 사용하면 중첩 된 개체가이 JSON 객체를 병합하는 데 도움이 될 것입니다 의존하지 않고 간단한 자바 스크립트 기능.
function mergeJSON(source1,source2){ /* * Properties from the Souce1 object will be copied to Source2 Object. * Note: This method will return a new merged object, Source1 and Source2 original values will not be replaced. * */ var mergedJSON = Object.create(source2);// Copying Source2 to a new Object for (var attrname in source1) { if(mergedJSON.hasOwnProperty(attrname)) { if ( source1[attrname]!=null && source1[attrname].constructor==Object ) { /* * Recursive call if the property is an object, * Iterate the object and set all properties of the inner object. */ mergedJSON[attrname] = mergeJSON(source1[attrname], mergedJSON[attrname]); } } else {//else copy the property from source1 mergedJSON[attrname] = source1[attrname]; } } return mergedJSON; }
-
3.ES2018의 새로운 확산 운영자는이 작업을 수행하는 몇 가지 좋은 방법을 제공합니다 :
ES2018의 새로운 확산 운영자는이 작업을 수행하는 몇 가지 좋은 방법을 제공합니다 :
기능이 결합 (...리스트) { 반환 list.reduce ( (a, b) => { 반환 {... A, ... B} } ) } // 작업은 간단한 개체 예상대로 CONSOLE.LOG ( 결합시키다( {X : 3, Z : 1}, {X 4, m : 4}, {A : 1} B {2} )); // 좋은 재귀 해결책이 아니다 CONSOLE.LOG ( 결합시키다( {X : 3, Z 1, 아이 {C : 1}} {X 4, m : 4, 아이 {D : 3}} {A : 1} B {2} ));
이것은 내가 얻을 수있는 최선의 재귀 솔루션이었습니다
함수 combine_recursive (...리스트) { 반환 list.reduce ( (a, b) => { 존재 또는 경우 // 비 객체는 B를 반환 만약 (! (A instanceof를 개체) ||! (나 객체 instanceof를)) { B를 반환! == 정의되지? B : A는; } // 객체에 대한 열쇠를 얻고 그들을 결합 CONST 키 = Object.keys (a) .concat (Object.keys (b)); (keys.map 반환 키 => { 창 {[키] combine_recursive (a [키], B [키])} } ).줄이다( (X, Y) => { ... 창 {X, Y} ... } ); } ) } // 테스트 재귀 및 우선 순위 CONSOLE.LOG ( combine_recursive ( {X : 3, Z 1, 아이 {C : 1, K : 1}} {X 4, m : 4, 아이 {D : 3, K 2}} {A : 1} B {2} )); // 질문의 예를 사용하여 VAR X = { "학생 표시": { '수학'1, '물리학': 5}}; var에 Y = { "학생 표시": { '화학': 3, '역사': 2}}; CONSOLE.LOG (combine_recursive (X, Y));
-
4.
https://gist.github.com/samad-aghaei/7250ffb74ed80732debb1cbb14d2bfb0 <pre> /** This script can merge two multi dimensional associative array/objects in javascript by comparing given object with its reference and will remove additional given keys, adding missed parameteres and also validating values without overhead. Also it will return the default values if no input presented with re-usable reference! Tested on IE8 and greater. **/ var module = (function(){ //To make our reference variable onchangable, have to put it into a function which is fster and more efficient than "JSON.parse(JSON.stringify(VARIABLE))" var _defs = function(){ return { //string, number and boolean are actually regex based validation keys on input values. a: ["string", 'Defaul value for "a"'], b: ["number", 300], c: ["boolean", true], d: { da: ["boolean", true], db: ["string", 'Defaul value for "db"'], dc: { dca: ["number", 200], dcb: ["string", 'Default value for "dcb"'], dcc: ["number", 500], dcd: ["boolean", true] }, dce: ["string", 'Default value for "dce"'], }, e: ["number", 200], f: ["boolean", 0], g: ["", 'This is an internal extra parameter'] } } var _validation = { number: function (defaultValue, userValue) { if(/^[0-9]+$/.test(userValue)) //Only numbers allowed return userValue; else return defaultValue; }, string: function (defaultValue, userValue) { if(/^[a-zA-Z\s]*$/.test(userValue)) //Only A to Z case insentitive with space aloowed. return userValue; else return defaultValue; }, boolean: function (defaultValue, userValue) { if(typeof userValue === 'boolean') //True or False or 0 ,1 return userValue; else return defaultValue; } } var _uniqueMerge = function(opts, _ref){ for(var key in _ref) if (_ref && _ref[key] && _ref[key].constructor && _ref[key].constructor === Object) _ref[key] = _uniqueMerge((opts ? opts[key] : null ), _ref[key] ); else if(opts && opts.hasOwnProperty(key)) _ref[key] = _validation[_ref[key][0]](_ref[key][1], opts[key]); //or without validation on user enties => ref[key] = obj[key] else _ref[key] = _ref[key][1]; return _ref; } var _get = function(inputs){ return _uniqueMerge(inputs, _defs()); } return { options: function(){ return _get(arguments[0] || null); // for more safety and control on number of input variables! used --> ( arguments[0] || null ) } } })(); //How to use it: input_one = { a : "Hello World", //b : ["number", 400], //User missed this parameter c: "Hi", d : { da : false, db : "Hellow! World", // ! is not allowed dc : { dca : 10, dcb : "My String", dcc: "3thString", dcd : false }, dce: "ANOTHER STRING", }, e: 40, f: true, z: 'x' }; console.log( JSON.stringify( module.options(input_one), null ,2 ) ); //Output: /* { "a": "Hello World", "b": 300, "c": true, "d": { "da": false, "db": "Defaul value for \"db\"", "dc": { "dca": 10, "dcb": "My String", "dcc": 500, "dcd": false }, "dce": "ANOTHER STRING" }, "e": 40, "f": true, "g": "This is an internal extra parameter" } */ input_two = { a : 32, //b : ["number", 400], //User missed this parameter c: "Hi", d : { da : false, db : "HelloWorld", dc : { dca : 10, dcb : "My String", dcd : false }, dce: 73, } }; console.log( JSON.stringify( module.options(input_two), null ,2 ) ); //output /* { "a": "Defaul value for \"a\"", "b": 300, "c": true, "d": { "da": false, "db": "HelloWorld", "dc": { "dca": 10, "dcb": "My String", "dcc": 500, "dcd": false }, "dce": "Default value for \"dce\"" }, "e": 200, "f": 0, "g": "This is an internal extra parameter" } */ //Empty input will return the default values! console.log( JSON.stringify( module.options(), null ,2 ) ); //Output /* { "a": "Defaul value for \"a\"", "b": 300, "c": true, "d": { "da": true, "db": "Defaul value for \"db\"", "dc": { "dca": 200, "dcb": "Default value for \"dcb\"", "dcc": 500, "dcd": true }, "dce": "Default value for \"dce\"" }, "e": 200, "f": 0, "g": "This is an internal extra parameter" } */</pre>
-
5.A는 덜 장황 비트.
A는 덜 장황 비트.
answer = { "student-marks": Object.assign(x['student-marks'], y['student-marks']) }
from https://stackoverflow.com/questions/18498801/how-to-merge-two-object-values-by-keys by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 Ajax를 사용하여 PHP 파일에 이미지를 보내? (0) | 2020.10.29 |
---|---|
[JQUERY] 나는 요청에 외부 스타일 시트를로드 할 수 있습니까? (0) | 2020.10.29 |
[JQUERY] jQuery를이 : 사용자 정의 속성을 가진 모든 요소를 선택 [중복] (0) | 2020.10.28 |
[JQUERY] 요소가 jQuery를 가진 CSS 클래스가 있는지 확인 (0) | 2020.10.28 |
[JQUERY] 은 iframe에서 부모 윈도우의 액세스 요소 (0) | 2020.10.28 |