简体   繁体   中英

I want to put a string to each value of array like the code below. But i don't want to use too many if operators

I want to do it like closest(number, array)[42] = "Sweets"; but it doesn't work. How can i make it work without writing too many if operators?

 function closest (num, arr) { var curr = arr[0]; var diff = Math.abs (num - curr); for (var val = 0; val < arr.length; val++) { var newdiff = Math.abs (num - arr[val]); if (newdiff < diff) { diff = newdiff; curr = arr[val]; } } return curr; } array = [42, 82, 122, 162, 202]; number = 33; if (closest (number, array) == 42) { var z = "Sweets";} if (closest (number, array) == 82) { var z = "Chicken";} if (closest (number, array) == 122) { var z = "Beef";} if (closest (number, array) == 162) { var z = "Pizza";} if (closest (number, array) == 202) { var z = "Apple";} alert (z);

Use an array of objects instead of lots of if statements.

 function closest(num, arr) { var curr = arr[0]; var diff = Math.abs(num - curr.price); for (var val = 1; val < arr.length; val++) { var newdiff = Math.abs(num - arr[val].price); if (newdiff < diff) { diff = newdiff; curr = arr[val]; } } return curr; } array = [{ item: 'Sweets', price: 42 }, { item: 'Chicken', price: 82 }, { item: 'Beef', price: 122 }, { item: 'Pizza', price: 162 }, { item: 'Apple', price: 202 }]; number = 33; z = closest(number, array); console.log(z.item);

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM