मैं इसे ES6 में कोड करने का प्रयास कर रहा हूं। नीचे मैं जो हासिल करने की कोशिश कर रहा हूं। मान लें कि मेरे पास schools नामक वस्तुओं की एक सरणी है।

let schools = [
    {name: 'YorkTown', country: 'Spain'},
    {name: 'Stanford', country: 'USA'},
    {name: 'Gymnasium Achern', country: 'Germany'}
];

अब, मैं editSchoolName नामक एक फ़ंक्शन लिखना चाहता हूं, जिसमें 3 पैरामीटर होंगे, schools (जो कि वह सरणी है जिसे मैंने ऊपर परिभाषित किया है), oldName और name

मैं पैरामीटर oldName में स्कूल का नाम पास करूंगा और उस नाम को पैरामीटर name में मान के साथ अपडेट किया जाना चाहिए।

मैं चर schools की स्थिति को बदलना नहीं चाहता, इसलिए मैं एक map फ़ंक्शन का उपयोग कर रहा हूं जो परिवर्तनों के साथ एक नई सरणी लौटाएगा।

editSchoolName फ़ंक्शन को इस तरह कहा जाएगा -

var updatedSchools = editSchoolName(schools, "YorkTown", "New Gen");

यहां, YorkTown नाम को New Gen नाम से बदल दिया जाना चाहिए। तो सरणी का अपेक्षित मान updatedSchools होना चाहिए -

let updatedSchools = [
    {name: 'New Gen', country: 'Spain'},
    {name: 'Stanford', country: 'USA'},
    {name: 'Gymnasium Achern', country: 'Germany'}
];

मेरा एडिटस्कूलनाम फंक्शन इस तरह दिखता है -

const editSchoolName = (schools, oldName, name) =>
    schools.map(item => {
        if (item.name === oldName) {
          /* This is the part where I need the logic */
        } else {
          return item;
        }
    });

उपर्युक्त वांछित परिणाम प्राप्त करने के लिए editSchoolName फ़ंक्शन में परिवर्तन करने में सहायता चाहिए।

23
Rito 3 अप्रैल 2018, 12:55

6 जवाब

सबसे बढ़िया उत्तर

इसे आज़माएं, ES6 Object.assign() सरणी तत्व की प्रतिलिपि बनाने और नई वस्तु को अपडेट करने के लिए।

let schools = [{
        name: 'YorkTown',
        country: 'Spain'
    },
    {
        name: 'Stanford',
        country: 'USA'
    },
    {
        name: 'Gymnasium Achern',
        country: 'Germany'
    }
];

const editSchoolName = (schools, oldName, name) => {
    return schools.map(item => {
        var temp = Object.assign({}, item);
        if (temp.name === oldName) {
            temp.name = name;
        }
        return temp;
    });
}

var updatedSchools = editSchoolName(schools, "YorkTown", "New Gen");
console.log(updatedSchools);
console.log(schools);
18
Rahul Sharma 3 अप्रैल 2018, 10:11
   const editSchoolName = (schools, oldName, newName) =>
    schools.map(({name, ...school }) => ({ ...school, name: oldName === name ? newName : name }));

आप एक टर्नरी का उपयोग करके इसे छोटा कर सकते हैं।

5
Jonas Wilms 3 अप्रैल 2018, 10:02

आपको अद्यतन वस्तु वापस करने की आवश्यकता है:

const editSchoolName = (schools, oldName, name) =>
  schools.map(item => {
      if (item.name === oldName) {
        return {...item, name};
      } else {
        return item;
      }
});
9
klugjo 3 अप्रैल 2018, 09:57
let schools = [{
    name: 'YorkTown',
    country: 'Spain'
  },
  {
    name: 'Stanford',
    country: 'USA'
  },
  {
    name: 'Gymnasium Achern',
    country: 'Germany'
  }
];

let updatedSchools = [{
    name: 'New Gen',
    country: 'Spain'
  },
  {
    name: 'Stanford',
    country: 'USA'
  },
  {
    name: 'Gymnasium Achern',
    country: 'Germany'
  }
];

const editSchoolName = ((schools, oldName, name) =>{
  schools.map(item => {
    if (item.name === oldName) {
      item.name = name;
      return item.name;
    } else {
      return item;
    }
  });
  console.log(schools);
});

editSchoolName(schools, 'YorkTown', "New Gen");
-1
Dipak chavda 3 अप्रैल 2018, 10:03

मुझे आश्चर्य है कि कैसे कोई भी उत्तर सरल समाधान नहीं देता है

const editSchoolName = (schools, oldName, newName) =>
      schools.map(school => { if (school.name === oldName) school.name = newName;
      return school; 
});
1
Sumer 9 जिंदा 2019, 12:49

यदि आप केवल टिप्पणी किए गए भाग को संपादित करना चाहते हैं:

const editSchoolName = (schools, oldName, name) =>
    schools.map(item => {
        if (item.name === oldName) {
          var newItem = Object.assign({},item);
          newItem.name = name;
          return newItem;
        }
        else{
          return item;
        }
    });
3
Anurag Lal 3 अप्रैल 2018, 11:20