IT TIP

data.map은 함수가 아닙니다.

itqueen 2020. 11. 3. 19:37
반응형

data.map은 함수가 아닙니다.


나는 고치는 방법을 해결할 수없는 오류에 대해 머리를 두드리고 있습니다. 다음이 있습니다.

JSON

{"products":
[
    {
        "product_id" : "123",
        "product_data" : {
            "image_id" : "1234",
            "text" : "foo",
            "link" : "bar",
            "image_url" : "baz"
        }
    },{
        "product_id" : "456",
        "product_data" : {
            "image_id" : "1234",
            "text" : "foo",
            "link" : "bar",
            "image_url" : "baz"
        }
    }
]}

및 다음 jQuery

function getData(data) {
    this.productID = data.product_id;
    this.productData = data.product_data;
    this.imageID = data.product_data.image_id;
    this.text = data.product_data.text;
    this.link = data.product_data.link;
    this.imageUrl = data.product_data.image_url;
}

$.getJSON("json/products.json").done(function (data) {

    var allProducts = data.map(function (item) {
        return new getData(item);
    });
});

아직 map.data가 함수로 정의되지 않았다는 오류가 발생합니까? 이전에 사용한 코드에서 새 프로젝트로 복사했기 때문에 작동하지 않는 것이 무엇인지 모르겠습니다. 유일한 차이점은 json 소스입니다. 이전 제품에는 [] 대괄호 앞에 { "products": 부분이 없습니다. 이것이 나를 쫓아내는 것입니까?


객체는 {}, 자바 스크립트 방법이없는에서 .map(), 그것은 단지에 대한의 배열 , [].

업무 변화에 대한 코드의 순서에 따라서 data.map()data.products.map()있기 때문에 products당신이에 반복 할 수있는 배열입니다.


객체를 반복하는 올바른 방법은

Object.keys(someObject).map(function(item)...
Object.keys(someObject).forEach(function(item)...;

// ES way
Object.keys(data).map(item => {...});
Object.keys(data).forEach(item => {...});

자세한 내용은 여기를 참조하세요.


data 배열이 아니라 제품 배열이있는 객체이므로 반복 data.products

var allProducts = data.products.map(function (item) {
    return new getData(item);
});

언제든지 다음을 수행 할 수 있습니다.

const SomeCall = request.get(res => { 

const Store = []; 
Store.push(res.data);

Store.forEach(item => { DoSomethingNeat 
});
}); 

객체를 매핑하려면 Lodash를 사용할 수 있습니다. NPM 또는 Yarn을 통해 설치되었는지 확인하고 가져옵니다.

Lodash와 함께 :

Lodash는 _.mapValues값을 매핑하고 키를 보존 하는 기능 제공 합니다.

_.mapValues({ one: 1, two: 2, three: 3 }, function (v) { return v * 3; });

// => { one: 3, two: 6, three: 9 }

데이터 는 Json 객체 여야하므로 다음 사항을 확인하십시오.

데이터 = $ .parseJSON (데이터);

이제 다음과 같이 할 수 있습니다.

data.map (function (...) {...});

나는 이것이 도움이되기를 바랍니다.


this.$http.get('https://pokeapi.co/api/v2/pokemon')
.then(response => {
   if(response.status === 200)
   {
      this.usuarios = response.data.results.map(usuario => {
      return { name: usuario.name, url: usuario.url, captched: false } })
          }
    })
.catch( error => { console.log("Error al Cargar los Datos: " + error ) } )

$.map()호출에 오류가 있습니다. 다음을 시도하십시오.

    function getData(data) {
        this.productID = data.product_id;
        this.productData = data.product_data;
        this.imageID = data.product_data.image_id;
        this.text = data.product_data.text;
        this.link = data.product_data.link;
        this.imageUrl = data.product_data.image_url;
    }

    $.getJSON("json.json?sdfsdfg").done(function (data) {

        var allPosts = $.map(data,function (item) {

            for (var i = 0; i < item.length; i++) {
                new getData(item[i]);
            };

        });

    }); 

코드의 오류는 returnAJAX 호출에서 만든 것이기 때문에 한 번만 실행되었습니다.

참고 URL : https://stackoverflow.com/questions/30803168/data-map-is-not-a-function

반응형