আপনার যদি ধরণের জবরদস্তি (ব্যবহারের কারণে indexOf
) না প্রয়োজন হয় তবে আপনি নীচের মতো কিছু চেষ্টা করতে পারেন:
var arr = [1, 2, 3];
var check = [3, 4];
var found = false;
for (var i = 0; i < check.length; i++) {
if (arr.indexOf(check[i]) > -1) {
found = true;
break;
}
}
console.log(found);
যেখানে arr
লক্ষ্য আইটেম রয়েছে। শেষের দিকে, found
দ্বিতীয় অ্যারেটিতে লক্ষ্যটির বিরুদ্ধে কমপক্ষে একটি ম্যাচ ছিল কিনা তা দেখাবে ।
অবশ্যই, আপনি যে কোনও কিছু ব্যবহার করতে চান তার জন্য সংখ্যাগুলি সরিয়ে নিতে পারেন - আপনার উদাহরণের মতো স্ট্রিংগুলি ভাল।
এবং আমার নির্দিষ্ট উদাহরণে, ফলাফলটি হওয়া উচিত true
কারণ দ্বিতীয় অ্যারের 3
লক্ষ্যমাত্রায় উপস্থিত রয়েছে।
হালনাগাদ:
এখানে আমি কীভাবে এটি কোনও ফাংশনে সংগঠিত করব (আগে থেকে কিছু ছোট পরিবর্তন সহ):
var anyMatchInArray = (function () {
"use strict";
var targetArray, func;
targetArray = ["apple", "banana", "orange"];
func = function (checkerArray) {
var found = false;
for (var i = 0, j = checkerArray.length; !found && i < j; i++) {
if (targetArray.indexOf(checkerArray[i]) > -1) {
found = true;
}
}
return found;
};
return func;
}());
ডেমো: http://jsfiddle.net/u8Bzt/
এই ক্ষেত্রে, ফাংশনটি targetArray
ক্লোডে হার্ডকোড না করে আর্গুমেন্ট হিসাবে পাস করার জন্য পরিবর্তন করা যেতে পারে ।
UPDATE2:
যদিও আমার উপরের সমাধানটি কার্যকর হতে পারে এবং (আশাকরি আরও বেশি) পঠনযোগ্য হতে পারে, আমি বিশ্বাস করি যে আমি বর্ণিত ধারণাটি পরিচালনা করার "আরও ভাল" উপায়টি কিছুটা ভিন্নভাবে করা। উপরের সমাধানটির সাথে "সমস্যা" হ'ল indexOf
লুপের অভ্যন্তরে লক্ষ্য অ্যারেটিকে অন্য অ্যারের প্রতিটি আইটেমের জন্য সম্পূর্ণ লুপ করা হয়। এটি "অনুসন্ধান" (একটি মানচিত্র ... একটি জাভাস্ক্রিপ্ট অবজেক্ট আক্ষরিক) ব্যবহার করে সহজেই "স্থির" হতে পারে। এটি প্রতিটি অ্যারের উপরে দুটি সাধারণ লুপগুলিকে অনুমতি দেয়। এখানে একটি উদাহরণ:
var anyMatchInArray = function (target, toMatch) {
"use strict";
var found, targetMap, i, j, cur;
found = false;
targetMap = {};
// Put all values in the `target` array into a map, where
// the keys are the values from the array
for (i = 0, j = target.length; i < j; i++) {
cur = target[i];
targetMap[cur] = true;
}
// Loop over all items in the `toMatch` array and see if any of
// their values are in the map from before
for (i = 0, j = toMatch.length; !found && (i < j); i++) {
cur = toMatch[i];
found = !!targetMap[cur];
// If found, `targetMap[cur]` will return true, otherwise it
// will return `undefined`...that's what the `!!` is for
}
return found;
};
ডেমো: http://jsfiddle.net/5Lv9v/
এই সমাধানের ক্ষতিটি হ'ল কেবল সংখ্যা এবং স্ট্রিং (এবং বুলিয়ানস) ব্যবহার করা যেতে পারে (সঠিকভাবে), কারণ মানগুলি (স্পষ্টতই) স্ট্রেনে রূপান্তরিত হয় এবং অনুসন্ধান মানচিত্রের কী হিসাবে সেট করা হয় set এটি হ'ল অক্ষরগত মানগুলির জন্য খুব ভাল / সম্ভাব্য / সহজেই করা যায় না।
for
লক্ষ্য অ্যারের উপরে একটি লুপ এবং পুনরাবৃত্তি ব্যবহার করুন । প্রতিটি উপাদান বর্তমান অ্যারের (ব্যবহারের মধ্যে অন্তর্ভুক্ত করা হয় তাহলেcurrent.indexOf(elem) !== -1)
।, তারপর তারা সেখানে সব করছি