ජාවාස්ක්‍රිප්ට් වස්තුවකට යතුරු / අගය යුගලයක් එකතු කරන්නේ කෙසේද?


1411

මෙන්න මගේ වස්තුව වචනාර්ථයෙන්:

var obj = {key1: value1, key2: value2};

වස්තුව key3සමඟ ක්ෂේත්‍රය එකතු කරන්නේ කෙසේද value3?


2
හොඳයි, ජේඑස් හි සහායක අරා වල සමස්ත
ප්‍රශ්නයම

Os නොස්රෙඩ්නා - කාරණය නම්, ජාවාස්ක්‍රිප්ට් හි සහායක අරා වැනි කිසිවක් නොමැත. එම ලිපියෙන් ඔහු අරාව වස්තුවකට වස්තු ගුණාංග එකතු කරයි, නමුත් මේවා සැබවින්ම 'අරාවේ' කොටසක් නොවේ.
UpTheCreek

කොන්දේසි සහිත යතුර සැකසීමට ක්‍රමයක් තිබේද: අනාගත ES + ක්‍රියාත්මක කිරීම් සමඟ වචනාර්ථයෙන් වස්තු වල අගය යුගල?
කොන් ඇන්ටොනාකොස්

Answers:


2287

වස්තුවකට නව ගුණාංග එකතු කිරීමට ක්‍රම දෙකක් තිබේ :

var obj = {
    key1: value1,
    key2: value2
};

තිත් අංකනය භාවිතා කිරීම:

obj.key3 = "value3";

වර්ග වරහන් අංකනය භාවිතා කිරීම:

obj["key3"] = "value3";

ඔබ දේපලෙහි නම දන්නා විට පළමු පෝරමය භාවිතා කරයි. දේපලෙහි නම ගතිකව තීරණය කළ විට දෙවන ආකෘතිය භාවිතා වේ. මෙම උදාහරණයේ දී මෙන්:

var getProperty = function (propertyName) {
    return obj[propertyName];
};

getProperty("key1");
getProperty("key2");
getProperty("key3");

සැබෑ JavaScript අරා භාවිතා කර නිර්මාණය කළ හැක:

අරාව වචනානුසාරයෙන් අංකනය:

var arr = [];

අරා ඉදිකිරීම්කරු අංකනය:

var arr = new Array();

4
obj යනු වස්තුවකි. වරහන් අතර (සහ ඇතුළුව) කොටස වචනාර්ථයෙන් වේ. obj යනු වචනයේ පරිසමාප්ත අර්ථයෙන්ම නොවේ.
නොස්රෙඩ්නා

24
යතුර අංකයක් නම් කුමක් කළ යුතුද? obj.123 = 456 ක්‍රියා නොකරයි. obj [123] = 456 වැඩ කරයි
ඇක්සෙල් ෆ්‍රොයිඩ්ගර්

11
@axelfreudiger ඇත්ත වශයෙන්ම, වලංගු විචල්‍ය හඳුනාගැනීමක් සින්ටැක්ටිකල් නොවන ඕනෑම දෙයක් වරහන් අංකනය සමඟ භාවිතා කළ යුතුය.
අයෝනු ජී. ස්ටැන්

1
@ කයිල්කලාෆ්Object.keys({"b": 1, "c": 3, "a": 2}).sort().forEach(console.log);
ජී. ස්ටැන්

2
O ජෝන් ස්මිත් lengthදේපල සකසා ඇත්තේ එය අරාවක් නොවන නිසා, එය වස්තුවක් / සිතියමක් / ශබ්ද කෝෂයකි .
අයෝනු ජී. ස්ටැන්

360

2017 වසර පිළිතුර: Object.assign()

Object.assign (dest, src1, src2, ...) වස්තු ඒකාබද්ධ කරයි.

එය dest(කෙසේ වෙතත්) ප්‍රභව වස්තූන්ගේ ගුණාංග සහ අගයන් සමඟ නැවත ලියයි , පසුව නැවත පැමිණේ dest.

Object.assign()සියළුම ගණනය කළ හැකි දේපලවල අගයන් ප්‍රභව වස්තු එකක් හෝ වැඩි ගණනක සිට ඉලක්කගත වස්තුවකට පිටපත් කිරීමට මෙම ක්‍රමය භාවිතා කරයි. එය ඉලක්කගත වස්තුව නැවත ලබා දෙනු ඇත.

සජීවී උදාහරණය

var obj = {key1: "value1", key2: "value2"};
Object.assign(obj, {key3: "value3"});

document.body.innerHTML = JSON.stringify(obj);

වර්ෂය 2018 පිළිතුර: වස්තු පැතිරුම් ක්‍රියාකරු {...}

obj = {...obj, ...pair};

MDN වෙතින් :

එය සපයා ඇති වස්තුවකින් තමන්ගේම ගණන් කළ නොහැකි ගුණාංග නව වස්තුවකට පිටපත් කරයි.

නොගැඹුරු ක්ලෝනකරණය (මූලාකෘති හැර) හෝ වස්තු ඒකාබද්ධ කිරීම දැන් වඩා කෙටි වාක්‍ය ඛණ්ඩයක් භාවිතා කළ හැකිය Object.assign().

බව සටහන Object.assign()ප්රේරක ස්ථානගත වන්නන් පැතිර කාරක රීති ඇති ෙහයින්ද නැහැ.

සජීවී උදාහරණය

එය වත්මන් ක්‍රෝම් සහ වත්මන් ෆයර්ෆොක්ස් වල ක්‍රියා කරයි. ඔවුන් පවසන්නේ එය වර්තමාන එජ් හි ක්‍රියාත්මක නොවන බවයි.

var obj = {key1: "value1", key2: "value2"};
var pair = {key3: "value3"};
obj = {...obj, ...pair};

document.body.innerHTML = JSON.stringify(obj);

2019 වසර පිළිතුර

වස්තු පැවරුම් ක්‍රියාකරු += :

obj += {key3: "value3"};

අපොයි ... මම රැගෙන ගියා. අනාගතයේ සිට තොරතුරු ජාවාරම නීති විරෝධී ය. නිසි ලෙස අපැහැදිලි!


36
obj + = නියමයි
මෙහර්දාඩ් ෂොක්රි

2
phpstorm භාවිතා කිරීම නිර්දේශ කරන constඅතර letඒ වෙනුවට varඑය 2018 ක්‍රමය විය යුතුද?
ජිම් ස්මිත්

im ජිම්ස්මිත්: ඔබ මෙහි මෙය කියන්නේ ඇයිදැයි විශ්වාස නැත. ඔබට මගේ මතය අවශ්‍යද? පරිවර්තකයෙකුගේ වාසිය නම් කොන්සෝලය තුළ සජීවීව සියල්ල වෙනස් කිරීමට ඇති හැකියාවයි. එය ප්‍රිය constකරන්නේ එය එම වාසිය ඉවත් කරන බැවිනි. මම එය භාවිතා කළ සෑම අවස්ථාවකම එය සංවර්ධනයට බාධාවක් විය.
7vujy0f0hy

3
සැබෑ ක්‍රමලේඛකයෙකු නිරන්තරයෙන් ආතතියට පත්වන වෘත්තියකට සහනයක් ලබා දීම සඳහා යම් විනෝදයක් අගය කරනු ඇත. ඔබේ Year 2019 answer ... Opps ...කොටස ස්තූතියි. ඔබ මගේ දවස ගත කළා. හොඳම පිළිතුර +1
කොලින්වා

1
LOL .. මම මෙහි පැමිණීමට පෙර ස්වයංසිද්ධව මෙය භාවිතා කළෙමි (ඇත්ත වශයෙන්ම ක්‍රියාත්මක වූයේ නැත)
ඇලස්වර්

91

මම LoDash / Underscore වලට ඇලුම් කළෙමිවිශාල ව්‍යාපෘති ලිවීමේදී .

එකතු කිරීම obj['key']හෝ obj.keyසියල්ලම පිරිසිදු ජාවාස්ක්‍රිප්ට් පිළිතුරු වේ. කෙසේ වෙතත්, ලොඩාෂ් සහ අන්ඩර්ස්කෝර් පුස්තකාල දෙකම පොදුවේ වස්තු සහ අරා සමඟ වැඩ කිරීමේදී අමතර පහසු කාර්යයන් රාශියක් සපයයි.

.push()අරාව සඳහා මිස වස්තු සඳහා නොවේ .

ඔබ සොයන දේ මත පදනම්ව, හැඟීමකට සමාන ක්‍රියාකාරීත්වයක් භාවිතා කිරීමට සහ ලබා දීමට හොඳ විය හැකි විශේෂිත කාර්යයන් දෙකක් තිබේ arr.push() . වැඩි විස්තර සඳහා ලියකියවිලි පරීක්ෂා කරන්න, ඔවුන්ට එහි විශිෂ්ට උදාහරණ කිහිපයක් තිබේ.

_.මර්ජ් (ලෝඩාෂ් පමණි)

දෙවන වස්තුව නැවත ලිවීම හෝ මූලික වස්තුවට එකතු කිරීම සිදු කරයි. undefinedඅගයන් පිටපත් නොවේ.

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
_.merge(obj, obj2);
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3"} 

_.extend / _.assign

දෙවන වස්තුව නැවත ලිවීම හෝ මූලික වස්තුවට එකතු කිරීම සිදු කරයි. undefinedපිටපත් කරනු ලැබේ.

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
_.extend(obj, obj2);
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3", key4: undefined}

_. දෝෂ

දෙවන වස්තුවෙහි පෙරනිමි අඩංගු වන අතර ඒවා නොපවතී නම් මූලික වස්තුවට එකතු වේ. undefinedයතුර දැනටමත් තිබේ නම් අගයන් පිටපත් වේ.

var obj = {key3: "value3", key5: "value5"};
var obj2 = {key1: "value1", key2:"value2", key3: "valueDefault", key4: "valueDefault", key5: undefined};
_.defaults(obj, obj2);
console.log(obj);
// → {key3: "value3", key5: "value5", key1: "value1", key2: "value2", key4: "valueDefault"}

$. දිගු කරන්න

ඊට අමතරව, එය jQuery.extend ගැන සඳහන් කිරීම වටී, එය _.merge හා සමාන වන අතර ඔබ දැනටමත් jQuery භාවිතා කරන්නේ නම් වඩා හොඳ විකල්පයක් විය හැකිය.

දෙවන වස්තුව නැවත ලිවීම හෝ මූලික වස්තුවට එකතු කිරීම සිදු කරයි. undefinedඅගයන් පිටපත් නොවේ.

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
$.extend(obj, obj2); 
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3"}

Object.assign ()

එය ES6 / ES2015 Object.assign සඳහන් කරනු වටී විය හැක, එය _.merge සමාන ක්රියාත්මක සහ ඔබ දැනටමත් වැනි ES6 / ES2015 polyfill භාවිතා කරන්නේ නම් හොඳම විකල්පය විය හැකිය බාබෙල් ඔබට අවශ්ය නම් ඔබ polyfill .

දෙවන වස්තුව නැවත ලිවීම හෝ මූලික වස්තුවට එකතු කිරීම සිදු කරයි. undefinedපිටපත් කරනු ලැබේ.

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
Object.assign(obj, obj2); 
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3", key4: undefined}

මම විශ්වාස කරනවා _.මර්ජ් දැන් _.extend (ගමනාන්තය, වෙනත්)
ක්‍රි.ව.

අහ්, ඔබ නිවැරදියි, _.extendවඩා විශ්වීය අන්වර්ථයකි, මන්ද යටි ඉරි සහිත පුස්තකාලය තවමත් භාවිතා extendනොකෙරේ merge. මම මගේ පිළිතුර යාවත්කාලීන කරමි.
සර්.නාදන් ස්ටැසන්

66

ඔබට මේවායින් එකක් හෝ භාවිතා කළ හැකිය (සපයා ඇති key3 යනු ඔබට භාවිතා කිරීමට අවශ්‍ය acutal යතුරයි)

arr[ 'key3' ] = value3;

හෝ

arr.key3 = value3;

Key3 විචල්යයක් නම්, ඔබ කළ යුත්තේ:

var key3 = 'a_key';
var value3 = 3;
arr[ key3 ] = value3;

මෙයින් පසු, ඉල්ලීමෙන් වචනයේ පරිසමාප්ත අර්ථයෙන්ම arr.a_keyආපසු ලැබෙනු ඇත .value33


7
මෙය අරාව නොව වස්තුවකි. JS අරා සුචිගත කරනු ලබන්නේ පූර්ණ සංඛ්‍යාවෙන් පමණි. Arr.length කිරීමට උත්සාහ කරන්න, එය නැවත ලැබෙනු ඇත 0. මේ ගැන වැඩිදුර කියවීම: less-broken.com/blog/2010/12/…
DevAntoine

A DevAntoine ගේ සබැඳියට ප්‍රවේශ විය නොහැක. ඔබට මෙම අරාව වර්ගයේ "දිග" ලබා ගැනීමට අවශ්‍ය නම්, භාවිතා කරන්න: Object.keys (your_array) .length මෙම ගැටලුව පිළිබඳ වැඩිදුර කියවීම සඳහා බලන්න: stackoverflow.com/questions/21356880/array-length-returns-0
Thế Anh Nguyễn

යමෙකුට ඔවුන් නිර්මාණය කරන අරාවේ දිග දේපල නැවත ලිවිය හැකිය. Var myarray ["length"] = numArrayFields සැකසීම මට මෙම ගැටළුව විසඳයි. ඔබ කෙසේ හෝ ඔබගේ අරාව වෙත එකතු කරන ක්ෂේත්‍ර ගණන පිළිබඳව ඔබ සෝදිසියෙන් සිටින බව උපකල්පනය කරන්න.
ජෝන් ස්මිත්

30
arr.key3 = value3;

ඔබේ අර්‍ථය සැබවින්ම අරාවක් නොවන නිසා ... එය මූලාකෘති වස්තුවකි. සැබෑ අරාව වනුයේ:

var arr = [{key1: value1}, {key2: value2}];

නමුත් එය තවමත් නිවැරදි නැත. එය ඇත්ත වශයෙන්ම විය යුත්තේ:

var arr = [{key: key1, value: value1}, {key: key2, value: value2}];

27
var employees = []; 
employees.push({id:100,name:'Yashwant',age:30});
employees.push({id:200,name:'Mahesh',age:35});

22
මෙය අරා සඳහා මිස වස්තු සඳහා නොවේ.
රෝලි

14

කාර්ය සාධනය

අද 2020.01.14 තෝරාගත් විසඳුම් සඳහා මම මැක් ඕස් හයිසෙයිරා 10.13.6 ක්‍රෝම් v78.0.0, සෆාරි v13.0.4 සහ ෆයර්ෆොක්ස් v71.0.0 මත පරීක්ෂණ සිදු කරමි. මම විකෘති (පළමු අකුර M) සහ වෙනස් කළ නොහැකි (පළමු අකුර I) සඳහා විසඳුම් බෙදා දෙමි. මෙම ප්‍රශ්නයට පිළිතුරු වශයෙන් තවමත් ප්‍රකාශයට පත් කර නොමැති වෙනස් කළ නොහැකි විසඳුම් කිහිපයක් (IB, IC, ID / IE) මම ලබා දෙමි

නිගමන

  • වේගවත්ම විකෘති විසඳුම් වේගවත් වෙනස් කළ නොහැකි (> 10x) වඩා වේගවත් වේ
  • obj.key3 = "abc"(MA, MB) වැනි සම්භාව්‍ය විකෘති ප්‍රවේශය වේගවත් ය
  • වෙනස් කළ නොහැකි විසඳුම් සඳහා {...obj, key3:'abc'}සහ Object.assign(IA, IB) වේගවත්ම වේ
  • පුදුමයට කරුණක් නම් ක්‍රෝම් (MC-IA) සහ සෆාරි (MD-IB) සඳහා විකෘති කළ හැකි විසඳුම් වලට වඩා වේගයෙන් වෙනස් කළ නොහැකි විසඳුම් තිබේ.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

විස්තර

පහත දැක්වෙන ස්නිපටයේ පෙර සැකසූ පරීක්‍ෂා කළ විසඳුමක් ඇත, ඔබට ඔබේ යන්ත්‍රය මත පරීක්‍ෂණයෙන් පූර්ව පරීක්‍ෂා කළ හැකිය මෙතැන

රූප විස්තරය මෙහි ඇතුළත් කරන්න


12

ගුණාංග එකතු කිරීම:

අපට prop2 : 2මෙම වස්තුවට එකතු කිරීමට අවශ්‍යයි , මේවා වඩාත් පහසු විකල්ප වේ:

  1. තිත් ක්‍රියාකරු: object.prop2 = 2;
  2. වර්ග වරහන්: object['prop2'] = 2;

එහෙනම් අපි භාවිතා කරන්නේ කුමන එකද?

තිත් ක්‍රියාකරු වඩාත් පිරිසිදු වාක්‍ය ඛණ්ඩයක් වන අතර එය පෙරනිමියක් ලෙස භාවිතා කළ යුතුය (ඉමෝ). කෙසේ වෙතත්, තිත් ක්‍රියාකරුට වස්තුවකට ගතික යතුරු එක් කිරීමට හැකියාවක් නොමැති අතර එය සමහර අවස්ථාවල ඉතා ප්‍රයෝජනවත් වේ. මෙන්න උදාහරණයක්:

const obj = {
  prop1: 1
}

const key = Math.random() > 0.5 ? 'key1' : 'key2';

obj[key] = 'this value has a dynamic key';

console.log(obj);

වස්තු ඒකාබද්ධ කිරීම:

වස්තු 2 ක ගුණාංග ඒකාබද්ධ කිරීමට අපට අවශ්‍ය වූ විට මේවා වඩාත් පහසු විකල්ප වේ:

  1. Object.assign(), ඉලක්කගත වස්තුවක් තර්කයක් ලෙස ගෙන, ප්‍රභව වස්තු එකක් හෝ කිහිපයක් ගෙන ඒවා එකට ඒකාබද්ධ කරයි. උදාහරණයක් වශයෙන්:

const object1 = {
  a: 1,
  b: 2,
};

const object2 = Object.assign({
  c: 3,
  d: 4
}, object1);

console.log(object2);

  1. වස්තු පැතිරුම් ක්‍රියාකරු ...

const obj = {
  prop1: 1,
  prop2: 2
}

const newObj = {
  ...obj,
  prop3: 3,
  prop4: 4
}

console.log(newObj);

අපි භාවිතා කරන්නේ කුමන එකද?

  • පැතිරීමේ වාක්‍ය ඛණ්ඩය අඩු වාචික වන අතර එය පෙරනිමි imo ලෙස භාවිතා කළ යුතුය. මෙම සින්ටැක්ස් සින්ටැක්ස් වෙත සම්ප්‍රේෂණය කිරීමට අමතක නොකරන්න, එය සියලු බ්‍රව්සර් මගින් සහය දක්වයි.
  • Object.assign() වඩාත් ගතික වන්නේ අපට තර්ක ලෙස සම්මත කර ඇති සියලුම වස්තූන් වෙත ප්‍රවේශය ඇති බැවින් ඒවා නව වස්තුවට පැවරීමට පෙර ඒවා හැසිරවිය හැකි බැවිනි.

1
ඔබගේ ලිපියේ ඉහළින්ම: ඒවා කැරලි වරහන් නොව හතරැස් වරහන් වේ.
බ්‍රැම් වැන්රෝයි

11

මේ සඳහා දැනටමත් පිළිගත් පිළිතුරක් ඇති බව මම දනිමි, නමුත් මගේ අදහස කොතැනක හෝ ලේඛනගත කිරීමට සිතුවෙමි. කරුණාකර [මිනිසුන්ට] මෙම අදහසෙහි සිදුරු කිරීමට නිදහස්ව සිටින්න, එය හොඳම විසඳුම දැයි මට විශ්වාස නැත ... නමුත් මම මෙය මිනිත්තු කිහිපයකට පෙර එකට තැබුවෙමි:

Object.prototype.push = function( key, value ){
   this[ key ] = value;
   return this;
}

ඔබ එය මේ ආකාරයෙන් භාවිතා කරනු ඇත:

var obj = {key1: value1, key2: value2};
obj.push( "key3", "value3" );

මූලාකෘති ශ්‍රිතය නැවත පැමිණෙන බැවින්, ඔබේ විචල්‍යයේ අවසානය thisදක්වා දාමය දිගටම කරගෙන යා හැකිය :.pushobjobj.push(...).push(...).push(...);

තවත් අංගයක් නම්, තල්ලු ශ්‍රිත තර්ක වල අගය ලෙස ඔබට අරාවක් හෝ වෙනත් වස්තුවක් සමත් විය හැකිය. වැඩ කරන උදාහරණයක් සඳහා මගේ ෆෙඩල් බලන්න: http://jsfiddle.net/7tEme/


සමහර විට මෙය හොඳ විසඳුමක් නොවිය හැකිය, මට jquery1.9 හි දෝෂ ඇති බව පෙනේ: TypeError: 'undefined' is not a function (evaluating 'U[a].exec(s)')එය jquery1.9 සමඟ පවා jsfiddle හි ක්‍රියාත්මක වන නිසා එය අමුතුයි
sadmicrowave

3
ඔබ Object.prototype දිගු නොකළ යුතුය; මෙය ජාවාස්ක්‍රිප්ට් හි "වස්තු-හැෂ් ටේබල්" විශේෂාංගය බිඳ දමයි (පසුව ගූගල් සිතියම් ජේඑස් ඒපීඅයි වැනි පුස්තකාල රාශියක්). සාකච්ඡාව බලන්න: stackoverflow.com/questions/1827458/…
ජස්ටින් ආර්.

9

@ අයෝනු ජී. ස්ටැන්ගේ පිළිතුර සමඟ ඔබට පන්තියක් නිර්මාණය කළ හැකිය

function obj(){
    obj=new Object();
    this.add=function(key,value){
        obj[""+key+""]=value;
    }
    this.obj=obj
}

අවසාන පන්තිය සමඟ නව වස්තුවක් නිර්මාණය කිරීම:

my_obj=new obj();
my_obj.add('key1', 'value1');
my_obj.add('key2', 'value2');
my_obj.add('key3','value3');

වස්තුව මුද්‍රණය කිරීම

console.log(my_obj.obj) // Return {key1: "value1", key2: "value2", key3: "value3"} 

යතුරක් මුද්‍රණය කිරීම

console.log(my_obj.obj["key3"]) //Return value3

මම ජාවාස්ක්‍රිප්ට් හි නවකයෙක්, අදහස් පිළිගැනීම. මා වෙනුවෙන් වැඩ කරයි.


7

බොහෝ පිළිතුරු වල දැනටමත් සඳහන් කර ඇති වඩාත් භාවිතා කළ ක්‍රම දෙකක්

obj.key3 = "value3";

obj["key3"] = "value3";

දේපලක් අර්ථ දැක්වීමට තවත් එක් ක්‍රමයක් වන්නේ Object.defineProperty () භාවිතා කිරීමයි.

Object.defineProperty(obj, 'key3', {
  value: "value3",       // undefined by default
  enumerable: true,      // false by default
  configurable: true,    // false by default
  writable: true         // false by default
});

දේපල නිර්වචනය කිරීමේදී ඔබට වැඩි පාලනයක් අවශ්‍ය විට මෙම ක්‍රමය ප්‍රයෝජනවත් වේ. අර්ථ දක්වා ඇති දේපල පරිශීලකයාට ගණන් කළ හැකි, වින්‍යාසගත කළ හැකි සහ ලිවිය හැකි ලෙස සැකසිය හැකිය.


6

ඔබේ උදාහරණයෙන් දැක්වෙන්නේ වස්තුවක් මිස අරාවක් නොවේ. එවැනි අවස්ථාවකදී, වස්තුවකට ක්ෂේත්‍රයක් එක් කිරීමට වඩාත් සුදුසු ක්‍රමය වන්නේ එයට අනුයුක්ත කිරීමයි.

arr.key3 = value3;

6
var arrOfObj = [{name: 'eve'},{name:'john'},{name:'jane'}];
    var injectObj = {isActive:true, timestamp:new Date()};

    // function to inject key values in all object of json array

    function injectKeyValueInArray (array, keyValues){
        return new Promise((resolve, reject) => {
            if (!array.length)
                return resolve(array);

            array.forEach((object) => {
                for (let key in keyValues) {
                    object[key] = keyValues[key]
                }
            });
            resolve(array);
        })
    };

//call function to inject json key value in all array object
    injectKeyValueInArray(arrOfObj,injectObj).then((newArrOfObj)=>{
        console.log(newArrOfObj);
    });

මේ වගේ ප්‍රතිදානය: -

[ { name: 'eve',
    isActive: true,
    timestamp: 2017-12-16T16:03:53.083Z },
  { name: 'john',
    isActive: true,
    timestamp: 2017-12-16T16:03:53.083Z },
  { name: 'jane',
    isActive: true,
    timestamp: 2017-12-16T16:03:53.083Z } ]

6

වස්තුව ප්රධාන ගත හෝ ඔබ නම්, එකතු කිරීමට අවශ්ය නොවේ නම් ඒ වෙබ් බ්රව්සර බොහෝ, සහ චෙක්පත් සහයෝගය ලබා ගත හැකි එය දැනට පවතින ප්රධාන වටිනාකම overides එය ලබා ගත නොහැකි එය අගය සමග යතුරු එකතු

උදාහරණ 1

let my_object = {};

// now i want to add something in it  

my_object.red = "this is red color";

// { red : "this is red color"}

උදාහරණ 2

let my_object = { inside_object : { car : "maruti" }}

// now i want to add something inside object of my object 

my_object.inside_object.plane = "JetKing";

// { inside_object : { car : "maruti" , plane : "JetKing"} }

උදාහරණ 3

let my_object = { inside_object : { name : "abhishek" }}

// now i want to add something inside object with new keys birth , gender 

my_object.inside_object.birth = "8 Aug";
my_object.inside_object.gender = "Male";


    // { inside_object : 
//             { name : "abhishek",
//               birth : "8 Aug",
//               gender : "Male" 
//            }   
//       }

5

ඔබට වස්තුවක් තුළ බහුවිධ නිර්නාමික වස්තු සාහිත්‍යයක් තිබේ නම් සහ යතුරු / අගය යුගල අඩංගු තවත් වස්තුවක් එක් කිරීමට අවශ්‍ය නම්, මෙය කරන්න:

ෆයර්බග් 'වස්තුව:

console.log(Comicbook);

ප්‍රතිලාභ:

.

කේතය:

if (typeof Comicbook[3]=='undefined') {
    private_formArray[3] = new Object();
    private_formArray[3]["name"] = "Peanuts";
    private_formArray[3]["value"] = "12";
}

Object {name="Peanuts", value="12"}Comicbook වස්තුවට එකතු කරනු ඇත


හැඳුනුම්පතක් හෝ නම දේපලක් ඇති වස්තූන් ඇමතීමට වඩාත් සුදුසු වෙනත් විකල්පයක් මනාව හා පැහැදිලිව පැහැදිලි කර ඇති අතර පසුව එය එකතු කිරීමේදී එය පැවරීම හොඳ ය. විශේෂයෙන් එය අනාගතයේදී තවත් මුක්කු ඇති විට හෝ තිබිය හැකි විට තවත් කෝමා එකක් දමා එය සැලසුම් වෙනස් කිරීමට සූදානම්ය
Avia Afer

5

එක්කෝ obj['key3'] = value3හෝ obj.key3 = value3නව යුගලය එකතු කරයිobj .

කෙසේ වෙතත්, මම දන්නවා jQuery ගැන සඳහන් කර නැති නමුත් ඔබ එය භාවිතා කරන්නේ නම්, ඔබට එම වස්තුව හරහා එකතු කළ හැකිය $.extend(obj,{key3: 'value3'}). උදා:

var obj = {key1: 'value1', key2: 'value2'};
$('#ini').append(JSON.stringify(obj));

$.extend(obj,{key3: 'value3'});

$('#ext').append(JSON.stringify(obj));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="ini">Initial: </p>
<p id="ext">Extended: </p>

jQuery. දිගු කිරීම (ඉලක්කය [, වස්තුව 1] [, වස්තුව එන්]) පළමු වස්තුවට වස්තු දෙකක හෝ වැඩි ගණනක අන්තර්ගතය ඒකාබද්ධ කරයි.

තවද මෙය පුනරාවර්තන එකතු කිරීම් / වෙනස් කිරීම් වලට ඉඩ දෙයි $.extend(true,object1,object2);:


5

ඊළඟ ජාවාස්ක්‍රිප්ට් පිරිවිතරයේ (අපේක්ෂක අදියර 3) කෙටි හා අලංකාර ක්‍රමයක් වන්නේ:

obj = { ... obj, ... { key3 : value3 } }

Object.assign එදිරිව Object.assign සහ ආචාර්ය ඇක්සෙල් රවුෂ්මේයර්ස් වෙබ් අඩවියෙන් ගැඹුරු සාකච්ඡාවක් සොයාගත හැකිය .

8.6.0 නිකුතුවේ සිට එය දැනටමත් node.js හි ක්‍රියාත්මක වේ.

යාවත්කාලීන නිකුතුවල ඇති විවාල්ඩි, ක්‍රෝම්, ඔපෙරා සහ ෆයර්ෆොක්ස් මෙම අංගය ද දනිති, නමුත් මිරෝසොෆ්ට් අද වන තුරුත්, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් හෝ එජ්හිවත් නැත.


4

ඔබට එය මේ ආකාරයෙන් එකතු කළ හැකිය:

arr['key3'] = value3;

හෝ මේ ආකාරයෙන්:

arr.key3 = value3;

විචල්ය සමඟ වස්තුව බවට අඟවන යෝජනා පිළිතුරු key3පමණක් වැඩ වටිනාකම නම් කරන key3ලදී 'key3'.


4

අනුව ඉඩකඩම් Accessors ECMA-262 අර්ථ ( http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf , P67), ඔබ ගුණ එකතු කිරීමට කළ හැකි ක්රම දෙකක් තිබේ පවතින වස්තුවක්. මේ දෙයාකාරයෙන්ම, ජාවාස්ක්‍රිප්ට් එන්ජිම ඔවුන්ට එක හා සමානව සලකනු ඇත.

පළමු ක්‍රමය වන්නේ තිත් අංකනය භාවිතා කිරීමයි:

obj.key3 = value3;

නමුත් මේ ආකාරයෙන්, ඔබ තිත් අංකනයෙන් පසුව හැඳුනුම්පතක් භාවිතා කළ යුතුය .

දෙවන ක්‍රමය වරහන් අංකනය භාවිතා කිරීමයි:

obj["key3"] = value3;

තවත් ආකාරයක්:

var key3 = "key3";
obj[key3] = value3;

මේ ආකාරයෙන්, ඔබට වරහන් අංකනයෙහි ප්‍රකාශනයක් ( හැඳුනුම්පත ඇතුළත් කරන්න ) භාවිතා කළ හැකිය.


4

අපට මෙයද මේ ආකාරයෙන් කළ හැකිය.

var myMap = new Map();
myMap.set(0, 'my value1');
myMap.set(1, 'my value2');
 for (var [key, value] of myMap) {
  console.log(key + ' = ' + value);
 }

1

{[key]: value}සින්ටැක්ස් භාවිතා කිරීමෙන් ඔබට නව වස්තුවක් නිර්මාණය කළ හැකිය :

const foo = {
  a: 'key',
  b: 'value'
}

const bar = {
  [foo.a]: foo.b
}

console.log(bar); // {key: 'value'}
console.log(bar.key); // value

const baz = {
  ['key2']: 'value2'
}

console.log(baz); // {key2: 'value2'}
console.log(baz.key2); // value2

පෙර වාක්‍ය ඛණ්ඩය සමඟින් ඔබට දැන් {...foo, ...bar}ඔබේ පැරණි අගය විකෘති නොකර නව වස්තුවක් එක් කිරීමට පැතිරෙන සින්ටැක්ස් භාවිතා කළ හැකිය :

const foo = {a: 1, b: 2};

const bar = {...foo, ...{['c']: 3}};

console.log(bar); // {a: 1, b: 2, c: 3}
console.log(bar.c); // 3


0

කිරීම සඳහා prepend එසේ වස්තුවක් ප්රධාන-අගය යුගල සඳහා බව අංගයක් සමග ක්රියා පළමු මෙය කරන්න:

    var nwrow = {'newkey': 'value' };
    for(var column in row){
        nwrow[column] = row[column];
    }
    row = nwrow;

0

එය සාක්ෂාත් කරගත හැකි හොඳම ක්‍රමය පහත දැක්වේ:

function getKey(key) {
  return `${key}`;
}

var obj = {key1: "value1", key2: "value2", [getKey('key3')]: "value3"};

//console.log(obj);

0

එය අතීතය පිළිබඳ ප්‍රශ්නයක් නමුත් වර්තමානයේ ගැටලුවයි. තවත් එක් විසඳුමක් යෝජනා කරයි: යතුර සහ අගයන් ශ්‍රිතයට යොමු කිරීමෙන් ඔබට සිතියම් වස්තුවක් ලැබෙනු ඇත.

var map = {};
function addValueToMap(key, value) {
map[key] = map[key] || [];
map[key].push(value);
}

3
මෙය කිසිසේත්ම ඇසූ ප්‍රශ්නයට සම්බන්ධ බවක් නොපෙනේ.
ක්වෙන්ටින්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.