我收到了输出:[{"ref":"contact.html","score":0.7071067811865475}]
$.getJSON( "index.json", function(content) {
idx = lunr.Index.load(content);
var results = idx.search(variabletosearch);
var final = JSON.stringify(results);
console.log(final);
});
如何打印参考值?当我console.log(final[0].ref);
时,我得到了未定义。
答案 0 :(得分:1)
var a = [{"ref":"contact.html","score":0.7071067811865475}];
a[0].ref;
a[0]
是数组中的第0个(或第一个)元素,它是对象文字{"ref":"contact.html","score":0.7071067811865475}
,您可以使用点表示法正常访问该对象。
扩大了一点:
var a = [{"ref":"contact.html","score":0.7071067811865475}];
var myObject = a[0];
console.log(myObject.ref);
//or with null checking
if (myObject) {
console.log(myObject.ref ? myObject.ref : 'no value');
}
答案 1 :(得分:1)
编辑:
JSON.stringify返回一个字符串,而不是一个对象。所以在这种情况下,最终'是一个字符串,其中包含对象'结果'
中的相同数据要从对象访问数据,您可以使用result [0] .ref,或者如果您想使用' final' (虽然你不需要),你可以这样做:
final = JSON.parse(final)
console.log(final[0].ref)
如果它只是数组中的一个对象,那么其他答案就足够了,但由于数组用于存储多个对象,您可以按如下方式执行此操作:
var arr = [
{"ref": "object1", "score": "1"},
{"ref": "object2", "score": "2"}
]
arr.map(function(object) {
console.log(object.ref)
})
JSFiddle使用警报而不是console.log()
您也可以使用循环,但这个更清洁。
答案 2 :(得分:0)
好吧,假设
var myvar = [{"ref":"contact.html","score":0.7071067811865475}];
然后:
var myref = myvar[0].ref;