বলুন আমার কাছে এই কোড আছে
var আরর = [{আইডি: 1, নাম: 'এ'}, {আইডি: 2, নাম: 'বি'}, {আইডি: 3, নাম: 'সি'}];
এবং আমি অ্যারে থেকে আইডি = 3 দিয়ে আইটেমটি সরাতে চাই। চিটচিটে না করে কি এই উপায় আছে? আন্ডারস্কোর ব্যবহার করে মাই কিছু বা এরকম কিছু?
ধন্যবাদ!
বলুন আমার কাছে এই কোড আছে
var আরর = [{আইডি: 1, নাম: 'এ'}, {আইডি: 2, নাম: 'বি'}, {আইডি: 3, নাম: 'সি'}];
এবং আমি অ্যারে থেকে আইডি = 3 দিয়ে আইটেমটি সরাতে চাই। চিটচিটে না করে কি এই উপায় আছে? আন্ডারস্কোর ব্যবহার করে মাই কিছু বা এরকম কিছু?
ধন্যবাদ!
উত্তর:
কেবল সরল জাভাস্ক্রিপ্ট ব্যবহার করে, এটি ইতিমধ্যে উত্তর দেওয়া হয়েছে: বস্তুর সম্পত্তি দ্বারা অ্যারে থেকে অবজেক্টগুলি সরান ।
আন্ডারস্কোর.জেএস ব্যবহার করে আপনি এর .findWhere
সাথে একত্রিত হতে পারেন .without
:
var arr = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}, {
id: 3,
name: 'c'
}];
//substract third
arr = _.without(arr, _.findWhere(arr, {
id: 3
}));
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
যদিও, যেহেতু আপনি যে কোনও উপায়ে এই ক্ষেত্রে একটি নতুন অ্যারে তৈরি করছেন, আপনি কেবল ব্যবহার করতে পারেন _.filter
বা নেটিভ Array.prototype.filter
ফাংশন (ঠিক যেমন অন্য প্রশ্নে দেখানো হয়েছে)। তারপরে আপনি এখানে একবারের মতো সম্ভাব্য দু'বার পরিবর্তে কেবল একবার অ্যারেতে পুনরাবৃত্তি করতে পারেন।
আপনি যদি স্থানে অ্যারে পরিবর্তন করতে চান তবে আপনাকে ব্যবহার করতে হবে .splice
। এটি অন্য প্রশ্নের মধ্যেও দেখানো হয়েছে এবং অদ্বিতীয় এটির জন্য কোনও কার্যকর ফাংশন সরবরাহ করে না বলে মনে হচ্ছে।
_.reject
এখানে আরও ভাল নির্বাচনের মতো দেখাচ্ছে।
arr.pop()
...
আপনি অ্যান্ডস্কোর ব্যবহার করতে পারেন .filter
var arr = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}, {
id: 3,
name: 'c'
}];
var filtered = _(arr).filter(function(item) {
return item.id !== 3
});
এই হিসাবে লেখা যেতে পারে:
var filtered = arr.filter(function(item) {
return item.id !== 3
});
var filtered = _.filter(arr, function(item) {
return item.id !== 3
});
আপনি ব্যবহার করতে পারেন .reject
_()
সংগ্রহটির চারপাশে একটি মোড়ক তৈরি করবে যা আপনাকে আন্ডারস্কোর পদ্ধতির সাহায্য করতে দেবে।
অ্যান্ডস্কোর ব্যবহার করুন _.reject()
:
arr = _.reject(arr, function(d){ return d.id === 3; });
arr = _.reject(arr, d => d.id === 3 );
অ্যান্ডস্কোরটিতে অ্যারে থেকে কোনও আইটেম অপসারণ করার জন্য একটি _ ছাড়িয়ে () পদ্ধতি নিখুঁত রয়েছে, বিশেষত যদি আপনার কাছে অপসারণের অবজেক্ট থাকে।
মুছে ফেলা মানগুলির সমস্ত দৃষ্টান্ত সহ অ্যারের অনুলিপি দেয় Return
_.without(["bob", "sam", "fred"], "sam");
=> ["bob", "fred"]
আরও জটিল অবজেক্টের সাথে কাজ করে।
var bob = { Name: "Bob", Age: 35 };
var sam = { Name: "Sam", Age: 19 };
var fred = { Name: "Fred", Age: 50 };
var people = [bob, sam, fred]
_.without(people, sam);
=> [{ Name: "Bob", Age: 35 }, { Name: "Fred", Age: 50 }];
আপনার যদি আইটেমটি সরানোর মতো না করে থাকে তবে এটির কেবল একটি সম্পত্তি, আপনি ব্যবহার করতে পারেন _.findWhere
এবং তারপরেও _.without
।
আপনি যদি স্ট্রিং ফিল্টার করছেন এবং কেস সংবেদনশীল ফিল্টার খুঁজছেন দয়া করে যত্ন নিন exercise _. ছাড়া () কেস সংবেদনশীল। আপনি নীচে প্রদর্শিত হিসাবে _.reject () ব্যবহার করতে পারেন।
var arr = ["test","test1","test2"];
var filtered = _.filter(arr, function(arrItem) {
return arrItem.toLowerCase() !== "TEST".toLowerCase();
});
console.log(filtered);
// ["test1", "test2"]
var filtered1 = _.without(arr,"TEST");
console.log(filtered1);
// ["test", "test1", "test2"]
var filtered2 = _.reject(arr, function(arrItem){
return arrItem.toLowerCase() === "TEST".toLowerCase();
});
console.log(filtered2);
// ["test1", "test2"]
অন্যান্য উত্তরগুলি অ্যারেটির একটি নতুন অনুলিপি তৈরি করে, আপনি যদি অ্যারেটি ব্যবহার করতে পারেন এমন জায়গায় সংশোধন করতে চান:
arr.splice(_.findIndex(arr, { id: 3 }), 1);
তবে এটি ধরে নিয়েছে যে উপাদানটি সর্বদা অ্যারের অভ্যন্তরে খুঁজে পাওয়া যাবে (কারণ যদি এটি না পাওয়া যায় তবে এটি শেষ উপাদানটি সরিয়ে ফেলবে)। নিরাপদ থাকতে আপনি ব্যবহার করতে পারেন:
var index = _.findIndex(arr, { id: 3 });
if (index > -1) {
arr.splice(index, 1);
}
বা অন্য সহজ উপায়:
_.omit(arr, _.findWhere(arr, {id: 3}));
আমার 2 সেন্ট
object
এবং একটি প্রদান করে object
। অতএব Arrays
যেখানে array
কোনও উপাদান অপসারণের পরে আমরা ফিরে পাওয়ার আশা করতে পারি সেখানে কাজ করার জন্য ভাল হবেনা ।
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1); => [2, 3, 4]
ব্যবহার করতে পারেন অতিরিক্ত প্লেইন জাভাস্ক্রিপ্ট এর Array#filter
ভালো পদ্ধতি:
var arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
var filteredArr = arr.filter(obj => obj.id != 3);
console.log(filteredArr);
অথবা, ব্যবহার Array#reduce
এবং এর Array#concat
মতো পদ্ধতি:
var arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
var reducedArr = arr.reduce((accumulator, currObj) => {
return (currObj.id != 3) ? accumulator.concat(currObj) : accumulator;
}, []);
console.log(reducedArr);
বিঃদ্রঃ:
আমি এই পদ্ধতিতে চেষ্টা করতাম
_.filter(data, function(d) { return d.name != 'a' });
ব্যবহারকারীরা প্রদত্ত উপরের সমাধানগুলির মতো আরও ভাল পদ্ধতি থাকতে পারে
আন্ডারস্কোর.জেএস ব্যবহার করে
var arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
var resultArr = _.reject(arr,{id:3});
console.log(resultArr);
ফলাফল হবে :: [{id:1name:'a'},{id:2,name:'c'}]