而不是 $.each 想使用 Array.find

Instead of $.each want to use Array.find

我想使用 Array.find 而不是 $.each 以便它在找到结果后停止循环,但我无法找出 return 邮政编码的正确语法。

        navigator.geolocation.getCurrentPosition(function (position) {
        var geocoder = new google.maps.Geocoder();
        var latLng   = new google.maps.LatLng( 
            position.coords.latitude, position.coords.longitude);

        geocoder.geocode({
            'latLng': latLng
        }, function (results, status) {
            var searchAddressComponents = results[0].address_components;
            var zipcode = "";

            //searchAddressComponents.find(function() {
            //});

            /*  function isZipcode() {
                    if(results[0].address_components.types[0]=="postal_code"){
                        zipcode = element.short_name;
                    }
                }*/

            //THIS WORKS BUT WANT TO USE ARRAY.FIND to return Zipcode
            $.each(searchAddressComponents, function(){
                if(this.types[0]=="postal_code"){
                    zipcode = this.short_name;
                }
            });

        }); //END OF GEOCODER
    });

给这只猫剥皮的方法有很多。但如果你想使用 Array#find,方法如下:

zipcode = searchAddressComponents.find(component => component.types[0] == "postal_code").short_name;


对于pre-ES6,函数如下

zipcode = searchAddressComponents.find(function (component) {
  return component.types[0] == "postal_code";
}).short_name;

这应该可行(假设您可以使用 ES6 语法,例如箭头函数):

const zipcode = searchAddressComponents.find(
  component =>  component.types[0] === 'postal_code'
).short_name;