বস্তুর একটি অ্যারে থেকে, অ্যারের হিসাবে কোনও সংখ্যার মান বের করুন


1016

আমার নীচের কাঠামোর সাথে জাভাস্ক্রিপ্ট অবজেক্ট অ্যারে রয়েছে:

objArray = [ { foo: 1, bar: 2}, { foo: 3, bar: 4}, { foo: 5, bar: 6} ];

আমি প্রতিটি বস্তু থেকে একটি ক্ষেত্র আহরণ করতে চাই এবং মানগুলি সহ একটি অ্যারে পাই, উদাহরণস্বরূপ ক্ষেত্র fooঅ্যারে দেবে [ 1, 3, 5 ]

আমি এই তুচ্ছ পদ্ধতির মাধ্যমে এটি করতে পারি:

function getFields(input, field) {
    var output = [];
    for (var i=0; i < input.length ; ++i)
        output.push(input[i][field]);
    return output;
}

var result = getFields(objArray, "foo"); // returns [ 1, 3, 5 ]

এটি করার জন্য আরও কি মার্জিত বা মূ ?় উপায় আছে, যাতে একটি কাস্টম ইউটিলিটি ফাংশন অপ্রয়োজনীয় হয়ে যায়?


প্রস্তাবিত সদৃশ সম্পর্কে নোট , এটি কীভাবে একটি একক বস্তুকে অ্যারেতে রূপান্তর করতে পারে তা কভার করে ।


3
প্রোটোটাইপ লাইব্রেরি অ্যারে প্রোটোটাইপটিতে "প্লাক" ফাংশন যুক্ত করেছে (আমি মনে করি), যাতে আপনি লিখতে পারেন var foos = objArray.pluck("foo");
পয়েন্টি

3
@ হাইড - jsperf.com/map-vs-native-for-loop - দয়া করে এটি একবার দেখুন, আশা করি সরল লুপিং নিজেই একটি ভাল সমাধান
N20084753

1
একটি নিখুঁত পরীক্ষার জন্য @ N20084753 আপনার স্থানীয় Array.prototype.mapফাংশনটি যেখানে রয়েছে তা তুলনা করা উচিত
Alnitak

@ অ্যালনিটাক - হ্যাঁ আপনি ঠিক বলেছেন তবে আমি বুঝতে পারি না কীভাবে দেশী অ্যারে.প্রোটোটাইপ.ম্যাপটি লুপের জন্য নেটিভের তুলনায় অনুকূলিত হয়, কোনওভাবেই আমাদের সম্পূর্ণ অ্যারেটি অতিক্রম করতে হবে।
N20084753

3
ওপি, আমি প্রস্তাবিত অন্য যে কোনও ক্ষেত্রে আপনার পদ্ধতির পছন্দ করি। এতে কোনও ভুল নেই।

উত্তর:


1332

এটি অর্জনের একটি ছোট উপায় এখানে:

let result = objArray.map(a => a.foo);

অথবা

let result = objArray.map(({ foo }) => foo)

আপনি পরীক্ষা করতে পারেন Array.prototype.map()


3
ভাল, এটি টোট্যমেডলির আরও একটি জবাবের মন্তব্যের সমান, তবে অন্য উত্তরগুলির তুলনায় এটি আসলে ভাল (আমার মতে) উপায় , সুতরাং ... এটি গ্রহণযোগ্য উত্তরে পরিবর্তন করা।
হাইড

4
@ পালোরোবার্তো অ্যারো ফাংশনগুলি মূলত আইই বাদে সর্বত্র সমর্থিত supported
tigs

1
নিশ্চিত, এটি অনুমোদিত, তবে আইএমএইচও-তে এমন কিছুই নেই যা এই উত্তরকে উদ্দেশ্যমূলকভাবে আরও ভাল করে তুলবে, আপনি প্রশ্ন জিজ্ঞাসা করার সময় উপলভ্য ছিল না এমন কোনও সিনট্যাক্স ব্যবহার করেছেন এবং কিছু ব্রাউজারে এটি সমর্থিত নয়। আমি আরও নোট করব যে এই উত্তরটি পোস্ট করার প্রায় এক বছর আগে মূলত গৃহীত উত্তরের উপর দেওয়া মন্তব্যের সরাসরি কপি।
Alnitak

26
@ অ্যালনিটাক আমার দৃষ্টিভঙ্গিতে আরও নতুন কার্যকারিতা ব্যবহার করা উদ্দেশ্যমূলকভাবে আরও ভাল। এই স্নিপেটটি অত্যন্ত সাধারণ, সুতরাং আমি বিশ্বাস করি না এটি চুরির ঘটনা। পুরানো উত্তরগুলি শীর্ষে পিন করার কোনও মূল্য নেই।
রব

6
মন্তব্যগুলি উত্তর নয়, ইমো যদি কোনও উত্তরের পরিবর্তে কোনও মন্তব্য পোস্ট করে, কেউ যদি এটির উত্তরে অনুলিপি করে তবে এটি তাদের নিজস্ব দোষ।
অ্যাকুইটাস

618

হ্যাঁ, তবে এটি জাভাস্ক্রিপ্টের একটি ES5 বৈশিষ্ট্যের উপর নির্ভর করে। এর অর্থ এটি IE8 বা তার থেকেও বেশি বয়সে কাজ করবে না।

var result = objArray.map(function(a) {return a.foo;});

ES6 সামঞ্জস্যপূর্ণ জেএস দোভাষী আপনি ব্রেভিটির জন্য একটি তীর ফাংশন ব্যবহার করতে পারেন :

var result = objArray.map(a => a.foo);

অ্যারে.প্রোটোটাইপ.ম্যাপ ডকুমেন্টেশন


5
এই সমাধানটি পরিষ্কার এবং সহজ বলে মনে হচ্ছে তবে এটি সরল লুপিং পদ্ধতির চেয়ে অনুকূলিত ized
N20084753

ওপি কি কোনও ক্ষেত্র পাওয়ার জন্য একটি পদ্ধতি চায় না, কেবল হার্ডকডযুক্ত নয় foo?
Alnitak

2
ইএস 6-এ আপনি করতে পারেনvar result = objArray.map((a) => (a.foo));
ব্ল্যাক

28
@ ব্ল্যাক আরও উন্নত:var result = objArray.map(a => a.foo);
টোটেমেডলি

4
@ ফাইজখাঁ বছরটি লক্ষ্য করুন। এই উত্তর পোস্ট করা হয়েছে 25 ই অক্টোবর ... 2013. "গৃহীত" উত্তর পোস্ট করা হয়েছিল 11 ই অক্টোবর, 2017. যদি কিছু হয় তবে এটি যদি লক্ষণীয় হয় যে চেকমার্কটি অন্যটিতে গিয়েছিল।
নাইট দ্য ডার্ক আবসোল

52

পরীক্ষা করে দেখুন Lodash এর_.pluck() ফাংশন বা আন্ডারস্কোর এর_.pluck() ফাংশন। উভয়ই একক ফাংশন কলে আপনি যা চান ঠিক তেমন করে!

var result = _.pluck(objArray, 'foo');

আপডেট: _.pluck()নাইটের উত্তরের_.map() অনুরূপ কিছুটির সংমিশ্রনের পক্ষে, লোডাশ ভি 4.0.0 হিসাবে সরানো হয়েছে_.pluck()অ্যান্ডস্কোর এ এখনও উপলব্ধ

আপডেট 2: মার্ক মন্তব্যগুলিতে যেমন উল্লেখ করেছেন , লোডাস ভি 4 এবং 4.3 এর মধ্যে কোথাও একটি নতুন ফাংশন যুক্ত হয়েছে যা এই কার্যকারিতাটি আবার সরবরাহ করে। _.property()একটি শর্টহ্যান্ড ফাংশন যা কোনও কোনও জিনিসের সম্পত্তি পাওয়ার জন্য একটি ফাংশন প্রদান করে।

অতিরিক্তভাবে, _.map()এখন দ্বিতীয় প্যারামিটার হিসাবে স্ট্রিংটি পাস করার অনুমতি দেয় যা এতে প্রবেশ করা হয় _.property()। ফলস্বরূপ, নিম্নোক্ত দুটি লাইন প্রাক লোডাশ 4 থেকে উপরের কোড নমুনার সমতুল্য।

var result = _.map(objArray, 'foo');
var result = _.map(objArray, _.property('foo'));

_.property(), এবং তাই _.map(), সাব-বৈশিষ্ট্য অ্যাক্সেসের জন্য আপনাকে বিন্দু দ্বারা পৃথক স্ট্রিং বা অ্যারে সরবরাহ করার অনুমতি দেয়:

var objArray = [
    {
        someProperty: { aNumber: 5 }
    },
    {
        someProperty: { aNumber: 2 }
    },
    {
        someProperty: { aNumber: 9 }
    }
];
var result = _.map(objArray, _.property('someProperty.aNumber'));
var result = _.map(objArray, _.property(['someProperty', 'aNumber']));

_.map()উপরের উদাহরণে উভয় কলই ফিরে আসবে [5, 2, 9]

আপনি যদি ক্রিয়ামূলক প্রোগ্রামিংয়ে আরও খানিকটা বেশি থাকেন তবে রামদারR.pluck() ফাংশনটি একবার দেখুন, যা দেখতে এরকম কিছু দেখাচ্ছে:

var result = R.pluck('foo')(objArray);  // or just R.pluck('foo', objArray)

5
সুসংবাদ: লড্যাশ ৪.০.০ এবং ৪.৩.০ _.property('foo')( কোথাও লোডাশ ডকস ডকস# property ) এর মধ্যে একটি সংক্ষিপ্তকরণ হিসাবে যুক্ত করা হয়েছিল function(o) { return o.foo; }। এই করতে Lodash ব্যবহারের ক্ষেত্রে shortens var result = _.pluck(objArray, _.property('foo'));আরও সুবিধার জন্য, Lodash 4.3.0 এর _.map() পদ্ধতি এছাড়াও ব্যবহার করে একটি সাধারণভাবে সংক্ষেপে পারবেন _.property()ফণা অধীন, ফলেvar result = _.map(objArray, 'foo');
মার্ক উ: ফিট্জগেরাল্ড

45

জেএসের কেবলমাত্র সমাধানের জন্যই কথা বলছি, আমি দেখতে পেয়েছি যে এটি অদৃশ্য হতে পারে, একটি সাধারণ সূচকযুক্ত forলুপ তার বিকল্পগুলির চেয়ে আরও পারফরম্যান্স।

100000 উপাদান অ্যারে থেকে একক সম্পত্তি আহরণ করা হচ্ছে (জেএসফিউর মাধ্যমে)

লুপ 368 অপস / সেকেন্ডের জন্য ditionতিহ্যবাহী

var vals=[];
for(var i=0;i<testArray.length;i++){
   vals.push(testArray[i].val);
}

লুপ 303 অপস / সেকেন্ডের জন্য ES6

var vals=[];
for(var item of testArray){
   vals.push(item.val); 
}

অ্যারে.প্রোটোটাইপ.ম্যাপ ১৯ অপস / সেকেন্ড

var vals = testArray.map(function(a) {return a.val;});

টিএল; ডিআর -। ম্যাপ () ধীরে ধীরে, তবে আপনি যদি পারফরম্যান্সের চেয়ে পঠনযোগ্যতা মূল্যবান বলে মনে করেন তবে এটি ব্যবহার করতে নির্দ্বিধায় হন।

সম্পাদনা # 2: 6/2019 - jscreen লিঙ্কটি ভাঙা, সরানো হয়েছে।


1
আপনার যা পছন্দ তা আমাকে কল করুন, তবে পারফরম্যান্স গণনাযোগ্য। আপনি মানচিত্র বুঝতে পারলে লুপের জন্য বুঝতে পারবেন।
দুর্বৃত্ত

যদিও এটি আপনার মানদণ্ডের ফলাফলগুলি শিখতে দরকারী তবে আমি মনে করি এটি এখানে অনুপযুক্ত, কারণ এটি এই প্রশ্নের উত্তর দেয় না। এটিকে উন্নত করতে হয় হয় প্রকৃত উত্তরটিও যুক্ত করুন, না হলে এটিকে একটি মন্তব্যে সঙ্কলন করুন (সম্ভব হলে)।
ইফেদী ওকনকভো

15

ব্যবহার Array.prototype.map:

function getFields(input, field) {
    return input.map(function(o) {
        return o[field];
    });
}

প্রাক ES5 ব্রাউজারগুলির জন্য শিমের জন্য উপরের লিঙ্কটি দেখুন।


15

ক্রস ব্রাউজার আশ্বাসের জন্য লোড্যাশ বা আন্ডারস্কোরের মতো কিছু ধরণের লাইব্রেরি ব্যবহার করা ভাল।

লোড্যাশে আপনি নীচের পদ্ধতিতে অ্যারেতে কোনও সম্পত্তির মান পেতে পারেন

_.map(objArray,"foo")

এবং অ্যান্ডকোরের মধ্যে

_.pluck(objArray,"foo")

দুজনেই ফিরবে

[1, 2, 3]

10

ES6 এ, আপনি এটি করতে পারেন:

const objArray = [{foo: 1, bar: 2}, {foo: 3, bar: 4}, {foo: 5, bar: 6}]
objArray.map(({ foo }) => foo)

Foo অপরিজ্ঞাত হয় কি সম্পর্কে? অপরিবর্তিত একটি অ্যারের ভাল হয় না।
Godhar

6

mapবস্তুর তালিকা থেকে 'কলামগুলি' নির্বাচন করার উপযুক্ত সমাধান হলেও এটির একটি খারাপ দিক রয়েছে। কলামগুলি বিদ্যমান কিনা তা স্পষ্টভাবে যাচাই না করা হলে এটি একটি ত্রুটি ফেলে দেবে এবং (সর্বোপরি) আপনাকে সরবরাহ করবে undefined। আমি এমন একটি reduceসমাধান বেছে নেব , যা কেবল সম্পত্তিটিকে অগ্রাহ্য করতে পারে বা আপনাকে ডিফল্ট মান দিয়ে সেট আপ করতে পারে।

function getFields(list, field) {
    //  reduce the provided list to an array only containing the requested field
    return list.reduce(function(carry, item) {
        //  check if the item is actually an object and does contain the field
        if (typeof item === 'object' && field in item) {
            carry.push(item[field]);
        }

        //  return the 'carry' (which is the list of matched field values)
        return carry;
    }, []);
}

jsbin উদাহরণ

প্রদত্ত তালিকার আইটেমগুলির মধ্যে একটিতে অবজেক্ট না থাকলে বা ক্ষেত্রটি না থাকলেও এটি কাজ করবে।

এমনকি কোনও আইটেমটি অবজেক্ট না হওয়া এবং ক্ষেত্রটি না থাকাতে এটি একটি ডিফল্ট মান নিয়ে আলোচনা করে আরও নমনীয় করে তোলা যায়।

function getFields(list, field, otherwise) {
    //  reduce the provided list to an array containing either the requested field or the alternative value
    return list.reduce(function(carry, item) {
        //  If item is an object and contains the field, add its value and the value of otherwise if not
        carry.push(typeof item === 'object' && field in item ? item[field] : otherwise);

        //  return the 'carry' (which is the list of matched field values)
        return carry;
    }, []);
}

jsbin উদাহরণ

এটি মানচিত্রের সাথে একই হবে কারণ প্রত্যাবর্তিত অ্যারের দৈর্ঘ্য প্রদত্ত অ্যারের সমান হবে। ( mapএক্ষেত্রে ক এর চেয়ে সামান্য সস্তা reduce):

function getFields(list, field, otherwise) {
    //  map the provided list to an array containing either the requested field or the alternative value
    return list.map(function(item) {
        //  If item is an object and contains the field, add its value and the value of otherwise if not
        return typeof item === 'object' && field in item ? item[field] : otherwise;
    }, []);
}

jsbin উদাহরণ

এবং তারপরে সর্বাধিক নমনীয় সমাধান রয়েছে, যা আপনাকে বিকল্প বিকল্প প্রদানের মাধ্যমে উভয় আচরণের মধ্যে স্যুইচ করতে দেয়।

function getFields(list, field, otherwise) {
    //  determine once whether or not to use the 'otherwise'
    var alt = typeof otherwise !== 'undefined';

    //  reduce the provided list to an array only containing the requested field
    return list.reduce(function(carry, item) {
        //  If item is an object and contains the field, add its value and the value of 'otherwise' if it was provided
        if (typeof item === 'object' && field in item) {
            carry.push(item[field]);
        }
        else if (alt) {
            carry.push(otherwise);
        }

        //  return the 'carry' (which is the list of matched field values)
        return carry;
    }, []);
}

jsbin উদাহরণ

উপরের উদাহরণগুলি (আশা করি) এটি যেভাবে কাজ করে তাতে কিছুটা আলোকপাত করেছে, ফাংশনটি ব্যবহার করে Array.concatফাংশনটি কিছুটা ছোট করতে দিন ।

function getFields(list, field, otherwise) {
    var alt = typeof otherwise !== 'undefined';

    return list.reduce(function(carry, item) {
        return carry.concat(typeof item === 'object' && field in item ? item[field] : (alt ? otherwise : []));
    }, []);
}

jsbin উদাহরণ


6

সাধারণভাবে, আপনি যদি অ্যারের ভিতরে থাকা অবজেক্টের মানগুলি এক্সট্রোপোলেট করতে চান (যেমন প্রশ্নটিতে বর্ণিত) তবে আপনি হ্রাস, মানচিত্র এবং অ্যারের বিন্যাসগুলি ব্যবহার করতে পারেন।

ES6

let a = [{ z: 'word', c: 'again', d: 'some' }, { u: '1', r: '2', i: '3' }];
let b = a.reduce((acc, obj) => [...acc, Object.values(obj).map(y => y)], []);

console.log(b)

ইন লুপের জন্য সমতুল্য হ'ল:

for (let i in a) {
  let temp = [];
  for (let j in a[i]) {
    temp.push(a[i][j]);
  }
  array.push(temp);
}

উত্পাদিত আউটপুট: ["শব্দ", "আবার", "কিছু", "1", "2", "3"]


3

এটি আপনার "আরও ভাল" সংজ্ঞা নির্ভর করে।

অন্যান্য উত্তরগুলি মানচিত্রের ব্যবহার নির্দেশ করে যা প্রাকৃতিক (বিশেষত ছেলেরা কার্যকরী শৈলীতে ব্যবহৃত হয়) এবং সংক্ষিপ্ত করে। আমি দৃ using়ভাবে এটি ব্যবহার করার পরামর্শ দিচ্ছি (যদি আপনি কয়েকটি আইই 8- আইটি লোকের সাথে বিরক্ত না হন) সুতরাং যদি "আরও ভাল" এর অর্থ "আরও সংক্ষিপ্ত", "রক্ষণাবেক্ষণযোগ্য", "বোধগম্য" হয় তবে হ্যাঁ, এটি আরও ভাল।

অন্যদিকে, এই সৌন্দর্য অতিরিক্ত ব্যয় ছাড়াই আসে না। আমি মাইক্রোবেঞ্চের খুব বড় অনুরাগী নই, তবে আমি এখানে একটি ছোট পরীক্ষা করেছি । ফলাফল অনুমানযোগ্য, পুরানো কুরুচিপূর্ণ পথটি মানচিত্রের কার্যকারিতার চেয়ে দ্রুত গতিতে বলে মনে হচ্ছে। সুতরাং যদি "আরও ভাল" এর অর্থ "দ্রুত" হয়, তবে না, পুরানো স্কুল ফ্যাশনের সাথেই থাকুন।

আবার এটি কেবল একটি মাইক্রোবেঞ্চ এবং কোনওভাবেই এর ব্যবহারের পক্ষে পরামর্শ দিচ্ছে না map, এটি কেবল আমার দুটি সেন্ট :)।


ঠিক আছে, এটি আসলে সার্ভার সাইড, কোনও ব্রাউজারে নয়, তাই আই 88 অপ্রাসঙ্গিক। হ্যাঁ, mapযাওয়ার অবিশ্বাস্য উপায়, কোনওভাবেই আমি গুগল দিয়ে এটি সন্ধান করতে ব্যর্থ হয়েছি (আমি কেবল জেকুরির মানচিত্রটি পেয়েছি, যা প্রাসঙ্গিক নয়)।
হাইড

3

আপনি যদি অ্যারে-এর মতো অবজেক্টগুলিকেও সমর্থন করতে চান তবে অ্যারে.ফর্ম (ES2015) ব্যবহার করুন :

Array.from(arrayLike, x => x.foo);

অ্যারে.প্রোটোটাইপ.ম্যাপ () পদ্ধতিতে এটির যে সুবিধা রয়েছে তা হ'ল ইনপুটটিও সেট হতে পারে :

let arrayLike = new Set([{foo: 1}, {foo: 2}, {foo: 3}]);

2

আপনি যদি ES6 + এ একাধিক মান চান তবে নিম্নলিখিতগুলি কাজ করবে

objArray = [ { foo: 1, bar: 2, baz: 9}, { foo: 3, bar: 4, baz: 10}, { foo: 5, bar: 6, baz: 20} ];

let result = objArray.map(({ foo, baz }) => ({ foo, baz }))

এটি {foo, baz}বাম দিকে যেমন অবজেক্ট ডেস্ট্রাক্টরিং ব্যবহার করছে এবং তীরের ডানদিকে ES6 এর বর্ধিত অবজেক্ট ল্যাটারেলের{foo: foo, baz: baz} কারণে সমান ।


শুধু আমার যা প্রয়োজন, আপনি এই সমাধানটি কত গতি / ধীর বলে মনে করেন?
রুবেন

1
@ রুবেনকে সত্যিই বলতে আমি মনে করি আপনার এই পৃষ্ঠাটি থেকে বিভিন্ন বিকল্প নেওয়ার এবং জেএসপিফার ডটকমের
ক্রিস

1

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

আপনি যদি সেই বৈশিষ্ট্যগুলি বাদ দিতে চান যা মানগুলি অপরিজ্ঞাত হয় বা কেবলমাত্র একটি নির্দিষ্ট সম্পত্তি বাদ দেয়, আপনি নিম্নলিখিতটি করতে পারেন:

    var obj = {value1: "val1", value2: "val2", Ndb_No: "testing", myVal: undefined};
    var keysFiltered = Object.keys(obj).filter(function(item){return !(item == "Ndb_No" || obj[item] == undefined)});
    var valuesFiltered = keysFiltered.map(function(item) {return obj[item]});

https://jsfiddle.net/ohea7mgk/


0

উপরে প্রদত্ত উত্তরের একক সম্পত্তি উত্তোলনের জন্য ভাল, আপনি যদি বস্তুর অ্যারে থেকে একাধিক সম্পত্তি আহরণ করতে চান তবে কি হবে। এখানেই সমাধান !! সে ক্ষেত্রে আমরা কেবল _.পিক (অবজেক্ট, [পাথ]) ব্যবহার করতে পারি

_.pick(object, [paths])

আসুন ধরে নেওয়া যাক اعتراضের নীচে তিনটি বৈশিষ্ট্যযুক্ত বস্তু রয়েছে

objArray = [ { foo: 1, bar: 2, car:10}, { foo: 3, bar: 4, car:10}, { foo: 5, bar: 6, car:10} ];

এখন আমরা প্রতিটি বস্তু থেকে ফু এবং বার্ট প্রপার্টি বের করতে এবং সেগুলি একটি পৃথক অ্যারেতে সঞ্চয় করতে চাই। প্রথমে আমরা মানচিত্রটি ব্যবহার করে অ্যারের উপাদানগুলিকে পুনরাবৃত্তি করব এবং তারপরে আমরা এতে লোডাশ লাইব্রেরি স্ট্যান্ডার্ড _.পিক () পদ্ধতি প্রয়োগ করি।

এখন আমরা 'foo' এবং 'বার' সম্পত্তিটি বের করতে সক্ষম।

var newArray = objArray.map((element)=>{ return _.pick(element, ['foo','bar'])}) console.log(newArray);

এবং ফলাফল হবে [oo foo: 1, বার: 2}, {foo: 3, বার: 4}, oo foo: 5, বার: 6}]

ভোগ !!!


1
কোথা _.pickথেকে আসে? এটি কোনও স্ট্যান্ডার্ড ফাংশন নয়।
নেভেজ

আমি সবেমাত্র উত্তর আপডেট করেছি, _.পিক () লোডাশ লাইব্রেরির একটি মানক পদ্ধতি।
আকাশ জৈন

0

যদি আপনার নেস্টেড অ্যারে থাকে তবে আপনি এটিকে এভাবে কাজ করতে পারেন:

const objArray = [ 
     { id: 1, items: { foo:4, bar: 2}},
     { id: 2, items: { foo:3, bar: 2}},
     { id: 3, items: { foo:1, bar: 2}} 
    ];

    let result = objArray.map(({id, items: {foo}}) => ({id, foo}))
    
    console.log(result)

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