$(document).on('change', '.units', function () {
var obj = $(this);
unit_id = parseInt($(this).val());
var item_array = [];
var unit_array = [];
var units = $(".units");
var items = $(".items");
$('#used_items tr').each(function () {
$(this).find('.items').each(function () {
item_array.push($(this).val());
});
$(this).find('.units').each(function () {
unit_array.push($(this).val());
});
});
var item_unit_associative_array = [];
for (var i = 0; i < units.length; i++) {
if (item_unit_associative_array[item_array[i]] == unit_array[i]) {
obj.val('');
return alert("Given Item Unit Already Selected");
}
else {
item_unit_associative_array[item_array[i]] = unit_array[i];
}
}
console.log(item_unit_associative_array););
From item_array and unit_array I want to build new object like
var item_unit_associative_array=[1:12, 1:13 ,1:14,2:10];
and finally want to check an object consists of key:value like
var test ={1:12}
is exists or not in the item_unit_associative_array
I think you need to nest two layers of objects . See the comments for the structure:
var items = [ 1, 1, 1, 2]; var units = [12, 13, 14, 10]; // Create the object like so: // { // 1: { 12: true, 13: true, 14: true }, // 2: { 10: true } // } var itemUnitAssociativeObject = {}; units.forEach(function(unitId, i) { var itemId = items[i]; if (!itemUnitAssociativeObject[itemId]) { itemUnitAssociativeObject[itemId] = {}; } itemUnitAssociativeObject[itemId][unitId] = true; }); console.log("1:13", test(1, 13)); console.log("1:10", test(1, 10)); console.log("2:10", test(2, 10)); function test(item, unit) { return !!(itemUnitAssociativeObject[item] && itemUnitAssociativeObject[item][unit]); }
If you don't like the nesting and the way it complicates your test, you can also "stringify" the item-unit id combination:
var items = [ 1, 1, 1, 2]; var units = [12, 13, 14, 10]; // Create the object like so: // { // "1:12": true, // "1:13": true, // etc. // } var map = items.reduce(function(map, itemId, i) { var id = itemId + ":" + units[i]; map[id] = true; return map; }, {}); console.log("1:13", map["1:13"]); console.log("1:10", map["1:10"]); console.log("2:10", map["2:10"]);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.