আমি কীভাবে কোনও জাভাস্ক্রিপ্ট অবজেক্টে কী / মান জোড় যুক্ত করতে পারি?


1381

এখানে আমার বস্তুটি আক্ষরিক:

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

আমি কীভাবে বস্তুর key3সাথে ক্ষেত্র যুক্ত করতে পারি value3?


2
ওয়েল, জাতীয় মধ্যে মিশুক অ্যারে গোটা বিষয়টি অদ্ভুত, কারণ আপনি এটা করতে পারেন ... dreaminginjavascript.wordpress.com/2008/06/27/...
Nosredna

@ নসরডেনা - মুল বক্তব্যটি হ'ল জাভাস্ক্রিপ্টে এসোসিয়েটিভ অ্যারের মতো জিনিস নেই। সেই নিবন্ধে তিনি একটি অ্যারে অবজেক্টে অবজেক্টের বৈশিষ্ট্য যুক্ত করছেন, তবে এগুলি আসলে 'অ্যারে'র অংশ নয়।
আপক্রিক

শর্তসাপেক্ষে কী সেট করার কোনও উপায় আছে: ভবিষ্যতে ES + বাস্তবায়নের সাথে কোনও বস্তুতে আক্ষরিক মূল্য জোড়া?
কন আন্তোনাকোস

উত্তর:


2252

কোনও সামগ্রীতে নতুন বৈশিষ্ট্য যুক্ত করার দুটি উপায় রয়েছে :

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");

একটি বাস্তব জাভাস্ক্রিপ্ট অ্যারে ব্যবহার করে নির্মিত যেতে পারে:

অ্যারে আক্ষরিক স্বরলিপি:

var arr = [];

অ্যারে নির্মাণকারী স্বরলিপি:

var arr = new Array();

4
আপত্তি একটি বস্তু। ধনুর্বন্ধনীগুলির মধ্যবর্তী অংশটি হ'ল বস্তুগত। আপত্তি একটি বস্তু আক্ষরিক নয়।
নসরেডনা

24
কী যদি একটি নম্বর হয়? obj.123 = 456 কাজ করে না। আপত্তি [123] = 456 যদিও কাজ করে
এক্সেল ফ্রুডিগার

10
@ অ্যাক্সেলফ্রেডিজার সত্যই, যা কিছু সিন্ট্যাক্টিকভাবে বৈধ পরিবর্তনশীল শনাক্তকারী নয় তা ব্র্যাকেট স্বরলিপি সহ ব্যবহার করতে হবে।
আয়নু জি স্টান

1
@ কাইলখালাফObject.keys({"b": 1, "c": 3, "a": 2}).sort().forEach(console.log);
জি স্টান

2
@ জনস্মিত lengthসম্পত্তি সেট করা হয়নি কারণ এটি কোনও অ্যারে নয়, এটি একটি অবজেক্ট / মানচিত্র / অভিধান।
আয়নু জি স্টান

343

বছর 2017 উত্তর: Object.assign()

অবজেক্ট.অ্যাসাইন (ডেস্ট, এসআরসি 1, এসসিআর 2, ...) অবজেক্টগুলিকে মার্জ করে।

এটি 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};

এমডিএন থেকে :

এটি সরবরাহ করা অবজেক্ট থেকে একটি নতুন অবজেক্টের উপরের অগণিত বৈশিষ্ট্যগুলি অনুলিপি করে।

শ্যালো-ক্লোনিং (প্রোটোটাইপ বাদে) বা অবজেক্টগুলির মার্জ করা এখন এর চেয়ে কম সংক্ষিপ্ত বাক্য গঠন ব্যবহার করে সম্ভব 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"};

উফ ... আমি বহন করলাম ভবিষ্যতে তথ্য পাচার অবৈধ। যথাযথভাবে অস্পষ্ট!



2
পিএইচপিস্টর্ম ব্যবহারের পরিবর্তে constএবং এর letপরিবর্তে var2018 এর উপায় হওয়া উচিত?
জিম স্মিথ

@ জিমস্মিথ: আপনি এখানে কেন এটি বলছেন তা নিশ্চিত নয়। আপনি আমার মতামত চান? কনসোলটিতে লাইভের সমস্ত কিছু পরিবর্তন করার ক্ষমতা হ'ল একজন দোভাষীর সুবিধা। আমি পছন্দ করি না constকারণ এটি সেই সুবিধাটি সরিয়ে দেয়। যতবার আমি এটি ব্যবহার করেছি, এটি বিকাশে বাধা পেয়েছে।
7vujy0f0hy

আমরা 2019 এ আছি তার অর্থ কি স্প্রেড অপারেটর প্রতিস্থাপনের জন্য ইতিমধ্যে অ্যাসাইনমেন্ট অপারেটর ব্যবহার করা যেতে পারে?
মিঃ-প্রোগ্রামগুলি

1
একটি সত্যিকারের প্রোগ্রামার চিরকালীন চাপযুক্ত পেশাকে ত্রাণ সরবরাহ করার জন্য কিছু মজার মূল্য দেবে। আপনার Year 2019 answer ... Opps ...অংশটি আপনাকে ধন্যবাদ দেওয়ার দাবিদার , আপনি আমার দিনটি তৈরি করেছেন । সেরা উত্তর +1
কলিনওয়া

89

আমি অনুরাগী সাবালক হয়েছে LoDash / আন্ডারস্কোর যখন বড় প্রকল্পের লেখা।

যুক্ত করে 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"} 

_.প্রেম / _সাইন

দ্বিতীয় অবজেক্টটি ওভাররাইট বা বেস অবজেক্টে যুক্ত হবে। 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"}

$ .extend

তদতিরিক্ত, এটি jQuery.extend উল্লেখ করার উপযুক্ত হতে পারে, এটি _ ডাবের মতোই কাজ করে এবং আপনি যদি ইতিমধ্যে 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না বলে এটি একটি আরও সার্বজনীন উপন্যাস merge। আমি আমার উত্তর আপডেট করব।
স্যার.নাথন স্টাসসেন

66

আপনি এগুলির মধ্যে যে কোনওটি ব্যবহার করতে পারেন (প্রদত্ত কী 3 টি আপনি ব্যবহার করতে চান এমন একিউটাল কী)

arr[ 'key3' ] = value3;

অথবা

arr.key3 = value3;

কী 3 যদি ভেরিয়েবল হয় তবে আপনার করা উচিত:

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

এর পরে, অনুরোধ করা একটি আক্ষরিকের arr.a_keyমানটি ফিরিয়ে দেয় ।value33


7
এটি কোনও অ্যারে নয় তবে একটি অবজেক্ট। জেএস অ্যারেগুলি কেবল পূর্ণসংখ্যার দ্বারা সূচকযুক্ত হয়। অরআরএলাইট করার চেষ্টা করুন এবং এটি ফিরে আসবে ০. এ সম্পর্কে আরও পড়ুন: কম-
ব্রোঙ্কন.

@ ডিভ্যানটোইনের লিঙ্কটি অ্যাক্সেসযোগ্য নয়। আপনি যদি এই অ্যারের ধরণের "দৈর্ঘ্য" পেতে চান তবে ব্যবহার করুন: অবজেক্ট.কিজ (আপনার_আরে) দৈর্ঘ্য এই সমস্যাটি সম্পর্কে আরও পড়ার জন্য, দেখুন: stackoverflow.com/questions/21356880/array-leth-returns-0
Thế Anh এনগুইন

তারা যে অ্যারে তৈরি করছে তার দৈর্ঘ্যের সম্পত্তিটিকেও সহজেই ওভাররাইট করতে পারে। Var myarray ["দৈর্ঘ্য"] নির্ধারণ = numArrayFields আমার জন্য এই সমস্যাটি সমাধান করে। ধরে নিচ্ছি যে আপনি যে কোনও ক্ষেত্র আপনার অ্যারেতে যুক্ত করছেন তার সন্ধান করছেন।
জন স্মিথ

30
arr.key3 = value3;

কারণ আপনার আরারটি আসলে কোনও অ্যারে নয় ... এটি একটি প্রোটোটাইপ অবজেক্ট। আসল অ্যারেটি হ'ল:

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

তবে এটি এখনও ঠিক নয়। এটি আসলে হওয়া উচিত:

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

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

22
এটি অ্যারেগুলির জন্য, বস্তুর জন্য নয়।
রলি

12

কেবল বৈশিষ্ট্য যুক্ত করা:

এবং আমরা prop2 : 2এই বস্তুকে যুক্ত করতে চাই , এগুলি সর্বাধিক সুবিধাজনক বিকল্প:

  1. ডট অপারেটর: object.prop2 = 2;
  2. চতুস্কন বন্ধনী: object['prop2'] = 2;

তাহলে আমরা কোনটি ব্যবহার করব?

ডট অপারেটর আরও পরিষ্কার সিনট্যাক্স এবং এটি একটি ডিফল্ট (imo) হিসাবে ব্যবহার করা উচিত। যাইহোক, ডট অপারেটর কোনও জিনিসে গতিশীল কী যুক্ত করতে সক্ষম নয়, যা কিছু ক্ষেত্রে খুব কার্যকর হতে পারে। এখানে একটি উদাহরণ:

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);

আমরা কোনটি ব্যবহার করব?

  • স্প্রেড সিনট্যাক্সটি কম ভার্বোজ এবং এটি একটি ডিফল্ট ইমো হিসাবে ব্যবহার করা উচিত। এই বাক্য গঠনটিকে সিনট্যাক্সে স্থানান্তর করতে ভুলবেন না যা সমস্ত ব্রাউজার দ্বারা সমর্থিত কারণ এটি তুলনামূলকভাবে নতুন।
  • 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আপনি .pushআপনার objভেরিয়েবলের শেষে চেইন চালিয়ে যেতে পারেন :obj.push(...).push(...).push(...);

আর একটি বৈশিষ্ট্য হ'ল আপনি ধাক্কা ফাংশন আর্গুমেন্টের মান হিসাবে একটি অ্যারে বা অন্য কোনও বস্তু পাস করতে পারেন। একটি কার্যনির্বাহী উদাহরণের জন্য আমার ফিডলটি দেখুন: http://jsfiddle.net/7tEme/


সম্ভবত এটি একটি ভাল সমাধান নয়, আমি jquery1.9 এ ত্রুটি পেয়ে যাচ্ছি বলে মনে হচ্ছে: TypeError: 'undefined' is not a function (evaluating 'U[a].exec(s)')যা অদ্ভুত কারণ এটি j jfery1.9 এর সাথেও jsfiddle এ কাজ করে
সাদমিক্রোভে

3
আপনি অবজেক্ট.প্রোটোটাইপ প্রসারিত করা উচিত নয়; এটি জাভাস্ক্রিপ্টের "অবজেক্ট-অ্যাস-হ্যাশটেবলস" বৈশিষ্ট্যটি (এবং পরবর্তীকালে গুগল ম্যাপস জেএস এপিআই এর মতো প্রচুর লাইব্রেরি) ভঙ্গ করে। আলোচনা দেখুন: স্ট্যাকওভারফ্লো
জাস্টিন আর।

11

কর্মক্ষমতা

আজ 2020.01.14 আমি নির্বাচিত সমাধানগুলির জন্য ক্রোম ভি 78.0.0, সাফারি ভি 13.0.4 এবং ফায়ারফক্স ভি 71.0.0-এ ম্যাকওস হাইসিয়ার 10.13.6 এ পরীক্ষা করে নিই। আমি সমাধানগুলিকে পরিবর্তনীয় (প্রথম অক্ষর এম) এবং পরিবর্তনযোগ্য (প্রথম অক্ষর I )গুলিতে ভাগ করি। আমি এই প্রশ্নটির উত্তরে এখনও প্রকাশিত হয়নি এমন কয়েকটি স্থাবর সমাধান (আইবি, আইসি, আইডি / আইই) সরবরাহ করি

উপসংহার

  • দ্রুততম পরিবর্তনীয় সমাধানগুলি দ্রুত পরিবর্তনযোগ্য (> 10x) এর চেয়ে অনেক দ্রুত
  • obj.key3 = "abc"(এমএ, এমবি) এর মতো ক্লাসিক পরিবর্তনীয় পদ্ধতির দ্রুততম
  • অপরিবর্তনীয় সমাধানের জন্য {...obj, key3:'abc'}এবং Object.assign(আইএ, আইবি) দ্রুততম
  • আশ্চর্যজনকভাবে ক্রোমের (এমসি-আইএ) এবং সাফারি (এমডি-আইবি) জন্য কিছু পরিবর্তনীয় সমাধানের চেয়ে দ্রুত অপরিবর্তনীয় সমাধান রয়েছে

এখানে চিত্র বর্ণনা লিখুন

বিস্তারিত

নীচে স্নিপেটে পরীক্ষিত সমাধানের পূর্বনির্ধারিত সমাধান রয়েছে, আপনি এখানে নিজের মেশিনে পরীক্ষা করতে পারেন

এখানে চিত্র বর্ণনা লিখুন


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(obj, 'key3', {
  value: "value3",       // undefined by default
  enumerable: true,      // false by default
  configurable: true,    // false by default
  writable: true         // false by default
});

সম্পত্তি সংজ্ঞা দেওয়ার সময় আপনি আরও নিয়ন্ত্রণ রাখতে চাইলে এই পদ্ধতিটি কার্যকর। সংজ্ঞায়িত সম্পত্তিটি ব্যবহার্য হিসাবে গণ্যযোগ্য, কনফিগারযোগ্য এবং লিখনযোগ্য হিসাবে সেট করা যেতে পারে।


6

আপনার উদাহরণটি একটি বস্তুকে দেখায়, অ্যারে নয়। সেক্ষেত্রে কোনও অবজেক্টে ক্ষেত্র যুক্ত করার পছন্দের উপায়টি কেবল এটির জন্য বরাদ্দ করা so

arr.key3 = value3;

6

বেশিরভাগ ব্রাউজার দ্বারা সমর্থিত, এবং এটি পরীক্ষা করে যে অবজেক্ট কীটি পাওয়া যায় বা আপনি যোগ করতে চান না, যদি পাওয়া যায় তবে এটি বিদ্যমান কী মানকে ছাড়িয়ে যায় এবং এটি উপলব্ধ না মান সহ কী যুক্ত করে

উদাহরণ 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);

আয়:

[অবজেক্ট {নাম = "স্পাইডারম্যান", মান = "11"}, অবজেক্ট {নাম = "মার্শিপুলামি", মান = "18"}, অবজেক্টের নাম = "গারফিল্ড", মান = "2"}]

কোড:

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 বস্তু


ভালভাবে এবং স্পষ্টভাবে ব্যাখ্যা করেছেন যে অন্য বিকল্প যা কোনও আইডি বা নাম সম্পত্তি যুক্ত বস্তুগুলিকে সম্বোধন করতে আরও উপযুক্ত, তারপরে যুক্ত করার সময় এটি বরাদ্দ করার সময়, ভাল। বিশেষত যখন এটি ভবিষ্যতে আরও প্রপসগুলি থাকতে পারে বা একই পদ্ধতি প্রয়োগ করতে পারে কেবল অন্য কোমা লাগিয়ে দেবে এবং এটি পরিকল্পনা পরিবর্তনের জন্য প্রস্তুত
অ্যাভিয়া আফার

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 } }

অবজেক্ট স্প্রেড বনাম অবজেক্ট.অ্যাসাইন এবং ডাঃ অ্যাক্সেল রাউশমায়ার্স সাইটে আরও গভীর আলোচনা পাওয়া যাবে

এটি 8.3.0 প্রকাশের পর থেকে নোড.জেজে ইতিমধ্যে কাজ করে।

আধুনিক সংস্করণে ভিভালদি, ক্রোম, অপেরা এবং ফায়ারফক্স এই বৈশিষ্ট্যটিও জানে, তবে মিরোসোফ্ট আজ অবধি না, ইন্টারনেট এক্সপ্লোরার বা এজে নেই।


5
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 } ]

4

আপনি হয় এটি এইভাবে যুক্ত করতে পারেন:

arr['key3'] = value3;

বা এইভাবে:

arr.key3 = value3;

ভেরিয়েবলের সাথে অবজেক্টটিতে কী করার পরামর্শ দেওয়া উত্তরগুলি কেবল key3তখনই কাজ করবে যদি এর মান key3হয় 'key3'


4

ইসিএমএ -২2২ ( 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

যেহেতু এটি অতীতের একটি প্রশ্ন তবে বর্তমান সমস্যা। আরও একটি সমাধান পরামর্শ দিতে পারে: কেবল কী এবং মানগুলি ফাংশনে পাস করুন এবং আপনি একটি মানচিত্রের অবজেক্ট পাবেন।

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

2
এটি মোটেই জিজ্ঞাসা করা প্রশ্নের সাথে সম্পর্কিত বলে মনে হচ্ছে না।
কোয়ান্টিন

0

অর্ডার করার জন্য পূর্বে লিখুন একটি বস্তু একটি কী-মান জোড়া, যাতে এ জন্য যে উপাদান সাথে কাজে প্রথম এই কাজ:

    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

{[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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.