所以我有一个旨在将JSON('myObj')中的'id'映射到数组的函数:
function get_data () {
let myObj = (JSON.parse(this.responseText));
let id_array = myObj.map(item = () => {return item.id});
console.log(id_array);
}
console.log(myObj)给了我预期的结果:
(10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {id: "774944", general: {…}, brand: {…}, images: {…}}
1: {id: "774945", general: {…}, brand: {…}, images: {…}}
...
9: {id: "738471", general: {…}, brand: {…}, images: {…}}
length: 10
__proto__: Array(0)
似乎get_data()函数正在运行,但不完全符合预期。这是我的id_array:
(10) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
0: undefined
1: undefined
...
9: undefined
length: 10
__proto__: Array(0)
因此,我看到映射函数按值工作不正确。我想念什么?
答案 0 :(得分:2)
好的,所以麻烦的行是
let id_array = myObj.map(item = () => {return item.id});
的意思是“将箭头函数分配给item变量,然后将其插入到map函数中以生成新数组。这当然没有任何意义,因为箭头函数中的项目将是未定义的。以下将是您想要的
let id_array = myObj.map(item => {return item.id});
此外,为什么不调用myObj,myArray以避免混淆。由于它实际上是一个数组。最好还是使用速记
let id_array = myArray.map(item => item.id);