由于某种原因,当我输出到文本框时,它会写[Object object]
这是我的下面的代码,尽管它是一个数组。
这不是一个重复的问题,因为在console.log中它显示了所有已抓取数据的数组,但是当将这些数据放入文本框中时,它仅显示[Object object]
const request = require('request');
const cheerio = require('cheerio');
var options = {
headers: {
'user-agent': 'request'
}
};
function somefunction() {
request('https://kith.com/collections/footwear/products/jbaq4160-140', options, (error, response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
var output = $('form[action="/cart/add"] select#productSelect > option').map((i, elem) => ({
size: $(elem).text(),
val: $(elem).attr('value')
})).get().reduce((acc, cur, i, arr) => {
arr.obj = arr.obj || {};
arr.obj[cur.size] = cur.val;
return arr.obj
}, {});
document.querySelector('#out').innerHTML = output;
console.log(output);
console.log('done');
}
});
}
在texbox中,它只是输出[Object object],不知道从这里做什么。
答案 0 :(得分:1)
您必须访问特定索引中的值。
尝试在浏览器的开发人员控制台中放置bugger,并检查所记录内容的索引。
然后访问它们。
答案 1 :(得分:0)
您先做map
,然后再做reduce
...您在reduce中的累加器是一个对象。然后,您将一个对象放在文本框中,得到的是[Object object]
查看您的减少输出。 [Object object]
仅仅意味着Javascript是unboxing
的一个String对象,其结果就是您所看到的。
只需在文本框中找出所需对象的哪个属性,然后将其传递给整个对象即可。
答案 2 :(得分:0)
如果您想将其写为字符串,请使用document.querySelector('#out').innerHTML = JSON.stringify(output);