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":
[] 괄호 앞에 파트가 표시됩니다.이게 날 흥분시키는 거야?
물건들,{}
JavaScript에는 메서드가 없습니다..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 => {...});
(전부는 아님) 경우에 따라서는 "데이터"를 대괄호([데이터]) 쌍에 넣고 "데이터" 내의 항목을 배열로 변경하는 것이 가장 간단한 답입니다.
$.getJSON("json/products.json").done(function (data) {
var allProducts = [data].map(function (item) {
return new getData(item);
});
});
여기서 [data]는 배열이며 ".map" 메서드를 사용할 수 있습니다.나한텐 효과가 있어!
또는 다음과 같은 방법으로 "데이터"를 어레이로 변환합니다.
let dataArr = Array.from(data);
$.getJSON("json/products.json").done(function (dataArr) {
var allProducts = dataArr.map(function (item) {
return new getData(item);
});
});
그러나 여기서 가장 중요한 것은 "데이터"에서 "제품"을 추출하는 것입니다.
data.products
「제품」은 어레이입니다.
그런 다음 ".map"을 사용할 수 있습니다.
data.products.map
data
어레이가 아니라 제품 배열이 있는 개체이므로 반복하십시오.data.products
var allProducts = data.products.map(function (item) {
return new getData(item);
});
객체를 매핑하려면 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 객체여야 합니다.그러려면 다음 사항을 확인하십시오.
data = $.parseJSON(data);
이제 다음과 같은 작업을 수행할 수 있습니다.
data.map(function (...) {
...
});
이게 도움이 됐으면 좋겠는데
항상 다음 작업을 수행할 수 있습니다.
const SomeCall = request.get(res => {
const Store = [];
Store.push(res.data);
Store.forEach(item => { DoSomethingNeat
});
});
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]);
};
});
});
코드의 오류는 당신이 만든 것입니다.return
AJAX 콜에서 한 번만 실행되었습니다.
언급URL : https://stackoverflow.com/questions/30803168/data-map-is-not-a-function
'programing' 카테고리의 다른 글
ReactJ findDOMName 및 getDOMName은 함수가 아닙니다. (0) | 2023.03.16 |
---|---|
세션 저장소를 자동으로 구성할 수 없습니다. 구성을 확인하십시오(세션 저장소 유형은 'null'임). (0) | 2023.03.16 |
Web Client vs Rest Template (0) | 2023.03.16 |
노드 패키지 내.json, 추가 파라미터를 사용하여 다른 스크립트에서 스크립트를 호출합니다.이 경우 mocha watcher를 추가합니다. (0) | 2023.03.16 |
Woocommerce - 두 가지 카테고리의 아이템을 장바구니에 추가하지 않도록 합니다. (0) | 2023.03.11 |