সদৃশগুলি প্রতিস্থাপনের সময় আপনি আপনার সম্পত্তি সংগ্রহ করতে কোনও বস্তু ব্যবহার করতে পারেন এবং তারপরে সেই বস্তুকে অ্যারেতে প্রসারিত / সমতল করতে পারেন। এটার মতো কিছু:
function merge(args) {
args = Array.prototype.slice.call(arguments);
var o = { };
for(var i = 0; i < args.length; ++i)
for(var j = 0; j < args[i].length; ++j)
o[args[i][j].name] = args[i][j].value;
return o;
}
function expand(o) {
var a = [ ];
for(var p in o)
if(o.hasOwnProperty(p))
a.push({ name: p, value: o[p]});
return a;
}
var arr1 = new Array({name: "lang", value: "English"}, {name: "age", value: "18"});
var arr2 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});
var arr3 = expand(merge(arr1, arr2));
আমি জানি না এটি সবচেয়ে দ্রুততর উপায় কিনা তবে এটি কোনও সংখ্যক ইনপুট অ্যারেগুলির জন্য কাজ করে; উদাহরণস্বরূপ, এটি:
var a = expand(
merge(
[{name: "lang", value: "English"}, {name: "age", value: "18"}],
[{name: "childs", value: '5'}, {name: "lang", value: "German"}],
[{name: 'lang', value: 'Pancakes'}]
)
);
a
যেটি ছিল তাতে আপনাকে একই জিনিস দেয়arr3
"জার্মান" "প্যানকেকস" দ্বারা প্রতিস্থাপিত হয়।
এই পদ্ধতির ধরে নেওয়া যায় না যে আপনার সমস্ত বস্তুর {name: ..., value: ...}
অবশ্যই একই রকম রয়েছে।
আপনি এটি এখানে কাজ করে দেখতে পারেন (দয়া করে আপনার কনসোলটি খুলুন): http://jsfiddle.net/ambiguous/UtBbB/
{name: "lang", value: "English"}
?