Javascript:在Javascript对象数组中按id查找对象,然后在同一Javascript对象中获取另一个对象信息?
所以我有一个如下的对象数组:Javascript:在Javascript对象数组中按id查找对象,然后在同一Javascript对象中获取另一个对象信息?,javascript,jquery,Javascript,Jquery,所以我有一个如下的对象数组: var test_data = [ { "id" : "Test01", //Has to be a string form ID "test_info" : "This is the test information", "test_score" : 1
var test_data = [
{
"id" : "Test01", //Has to be a string form ID
"test_info" : "This is the test information",
"test_score" : 1
},
{
"id" : "Test02", //Has to be a string form ID
"test_info" : "This is the test information",
"test_score" : 2
}
我将有一个如下的变量:例如var data=“Test01”
我想知道是否可以使用该变量通过其id
搜索对象并返回整个对象(如果可能,将存储在另一个变量中)
然后
要访问该对象并获取返回的测试信息
信息
为了简化,我希望能够搜索test\u数据
,查找与“id”
匹配的对象,例如“Test01”
。然后在数组中找到该对象后,从该对象获取“test\u info”
信息,例如“这是测试信息”
,并将其作为字符串存储在变量中
如果可能的话,我将非常感谢在这件事上的任何帮助
编辑:
@dave您的答案非常有效,如下所示:
test_data.getTestInfo = (id) => test_data.find(t => t.id ===id).test_info;
let info = test_data.getTestInfo('Test01');
console.log(info);
但是
匹配的“id”
例如“Test01”
将来自一个变量,如li\u test=$(this).text()
但是如果使用“Test01”
,它的工作原理就不同了
工作原理:
var li_test = $(this).text();
test_data.getTestInfo = (id) => test_data.find(t => t.id ===id).test_info;
let info = test_data.getTestInfo(li_test);
console.log(info);
但是上面的代码段返回了一个错误-UncaughtTypeError:无法读取未定义的属性“test_info”听起来您只是想这样做:
var test_data = [
{
"id" : "Test01", //Has to be a string form ID
"test_info" : "This is the test information",
"test_score" : 1
},
{
"id" : "Test02", //Has to be a string form ID
"test_info" : "This is the test information",
"test_score" : 2
}
var测试数据=[{
“id”:“Test01”,//必须是字符串形式的id
“测试信息”:“这是测试信息”,
“测试分数”:1分
},
{
“id”:“Test02”,//必须是字符串形式的id
“测试信息”:“这是测试信息”,
“测试分数”:2分
}];
test\u data.getTestInfo=(id)=>test\u data.find(t=>t.id==id);
$('button')。在('click',function()上{
设id=$(this.text();
let info=test\u data.getTestInfo(id);
控制台日志(信息);
});代码>
Test01
stringToFind是您的字符串
及
returnedObject是匹配的对象
var stringToFind=“Test01”;
var测试数据=[{
“id”:“Test01”,
“测试信息”:“这是测试信息”,
“测试分数”:1分
},
{
“id”:“Test02”,
“测试信息”:“这是测试信息”,
“测试分数”:2分
}];
test_data.getObjectFromID=(id)=>test_data.find(target=>target.id==id);
var returnedObject=test_data.getObjectFromID(stringToFind);
console.log(returnedObject)
在我尝试引入'Test01'
一个变量之前效果很好,如下所示var li_test=$(this).text()代码>当单击链接时,该变量以测试ID的名称出现,返回时与变量一样,但当它试图引入上面的答案时,返回如下Uncaught TypeError:Cannot read属性'Test_info'of undefineddev trued usingvar li_Test=JSON.stringify($(this).text())代码>但它仍然没有work@Jay1995听起来你需要进一步扩展你的问题details@solarshado你现在得到我想要的了吗?抱歉没有更好地解释@戴夫,谢谢,我成功了。问题是变量存储时两边都有双引号,所以只需删除它们,就可以完美地工作,谢谢!var stringToFind=$(this.text()代码>将这样表示…这也是在搜索后返回整个对象,而不是通过id
搜索,并仅返回test\u info
数据,该数据应为“这是测试信息”,您可以控制台.log($(this).text())。它记录了什么?