Javascript 如何仅选择一些JSON对象?
嗨,我有一个脚本可以解析本地JSON对象(目前只是为了显示一个列表) 目前,该列表显示了所有元素。如何修改此脚本以仅显示带有“loadInitially”:“1”的脚本Javascript 如何仅选择一些JSON对象?,javascript,jquery,json,Javascript,Jquery,Json,嗨,我有一个脚本可以解析本地JSON对象(目前只是为了显示一个列表) 目前,该列表显示了所有元素。如何修改此脚本以仅显示带有“loadInitially”:“1”的脚本 另外,一个快速的语法问题,我觉得这行 implantFamilies += implantData.implantFamilies[index].familyDisplay + "<br />"; implantFamilies+=implantData.implantFamilies[index].family
另外,一个快速的语法问题,我觉得这行
implantFamilies += implantData.implantFamilies[index].familyDisplay + "<br />";
implantFamilies+=implantData.implantFamilies[index].familyDisplay+“
”;
可以这样写
implantFamilies += this[index].familyDisplay + "<br />";
implantFamilies+=此[索引].familyDisplay+“
”;
但是我不能让它工作…好吧,现在这似乎很明显
$.each(implantData.implantFamilies, function( index, value ) {
if (implantData.implantFamilies[index].loadInitially == "1") {
implantFamilies += implantData.implantFamilies[index].familyDisplay + "<br />";
} else {
//do nothing
}
});
$.each(implantData.implantFamilies,函数(索引,值){
if(implantData.implantFamilies[index].LoadInitialize==“1”){
implantFamilies+=implantData.implantFamilies[索引].familyDisplay+“
”;
}否则{
//无所事事
}
});
我问题的第二部分怎么样?现在看来这很明显
$.each(implantData.implantFamilies, function( index, value ) {
if (implantData.implantFamilies[index].loadInitially == "1") {
implantFamilies += implantData.implantFamilies[index].familyDisplay + "<br />";
} else {
//do nothing
}
});
$.each(implantData.implantFamilies,函数(索引,值){
if(implantData.implantFamilies[index].LoadInitialize==“1”){
implantFamilies+=implantData.implantFamilies[索引].familyDisplay+“
”;
}否则{
//无所事事
}
});
我问题的第二部分如何?最简单的方法是使用Javascript
Array.filter()
方法
// (or in your case, you get it from localstorage, but here's the data)
var myJson = {"implantFamilies":[
{"id":"1","familySelector":"aa","familyDisplay":"One","loadInitially":"1"},
{"id":"2","familySelector":"bb","familyDisplay":"Two","loadInitially":"1"},
{"id":"3","familySelector":"cc","familyDisplay":"Three","loadInitially":"1"},
{"id":"4","familySelector":"dd","familyDisplay":"Four","loadInitially":"0"},
{"id":"5","familySelector":"ee","familyDisplay":"Five","loadInitially":"0"}] };
//the array of implant families
var implantFamilies = myJson.implantFamilies;
//the filtering function. This is preferable to $.each
function implantFamiliesThatLoadInitially(implantFamily){
return implantFamily.loadInitially === '1';
}
//this is only the ones you want, (filtered by loadInitially property)
var loadInitiallyImplantFamilies = implantFamilies.filter(implantFamiliesThatLoadInitially);
代码第二部分的目标是基于json中存储在变量implantFamilies
中的数据构建一些html。我将推荐Array.map()作为一个比处理此
更简单的解决方案。就像之前一样,我用评论将其分为多个步骤,以便清楚发生了什么
//your map function. You can make any html you want, like li's
function toImplantFamilyHtml(family){
return family.familyDisplay + '<br />'
}
//returns a plain string of html
var implantFamilyHtml = loadInitiallyImplantFamilies.map(toImplantFamilyHtml);
//jquery object you can use, or append to the DOM or whatever
var $implantFamilyHtml = $(implantFamilyHtml);
//append to DOM
$("#holderForFamilySelect").html($implantFamilyHtml);
//映射函数。你可以制作任何你想要的html,就像李的一样
用于家庭TML(家庭)的功能{
return family.familyDisplay+“
”
}
//返回html的纯字符串
var implantFamilyHtml=loadInitiallyImplantFamilies.map(toImplantFamilyHtml);
//您可以使用jquery对象,或将其附加到DOM或其他任何对象
变量$implantFamilyHtml=$(implantFamilyHtml);
//附加到DOM
$(“#holderForFamilySelect”).html($implantFamilyHtml);
工作小提琴:最简单的方法是使用Javascript
Array.filter()
方法
// (or in your case, you get it from localstorage, but here's the data)
var myJson = {"implantFamilies":[
{"id":"1","familySelector":"aa","familyDisplay":"One","loadInitially":"1"},
{"id":"2","familySelector":"bb","familyDisplay":"Two","loadInitially":"1"},
{"id":"3","familySelector":"cc","familyDisplay":"Three","loadInitially":"1"},
{"id":"4","familySelector":"dd","familyDisplay":"Four","loadInitially":"0"},
{"id":"5","familySelector":"ee","familyDisplay":"Five","loadInitially":"0"}] };
//the array of implant families
var implantFamilies = myJson.implantFamilies;
//the filtering function. This is preferable to $.each
function implantFamiliesThatLoadInitially(implantFamily){
return implantFamily.loadInitially === '1';
}
//this is only the ones you want, (filtered by loadInitially property)
var loadInitiallyImplantFamilies = implantFamilies.filter(implantFamiliesThatLoadInitially);
代码第二部分的目标是基于json中存储在变量implantFamilies
中的数据构建一些html。我将推荐Array.map()作为一个比处理此
更简单的解决方案。就像之前一样,我用评论将其分为多个步骤,以便清楚发生了什么
//your map function. You can make any html you want, like li's
function toImplantFamilyHtml(family){
return family.familyDisplay + '<br />'
}
//returns a plain string of html
var implantFamilyHtml = loadInitiallyImplantFamilies.map(toImplantFamilyHtml);
//jquery object you can use, or append to the DOM or whatever
var $implantFamilyHtml = $(implantFamilyHtml);
//append to DOM
$("#holderForFamilySelect").html($implantFamilyHtml);
//映射函数。你可以制作任何你想要的html,就像李的一样
用于家庭TML(家庭)的功能{
return family.familyDisplay+“
”
}
//返回html的纯字符串
var implantFamilyHtml=loadInitiallyImplantFamilies.map(toImplantFamilyHtml);
//您可以使用jquery对象,或将其附加到DOM或其他任何对象
变量$implantFamilyHtml=$(implantFamilyHtml);
//附加到DOM
$(“#holderForFamilySelect”).html($implantFamilyHtml);
工作小提琴:到您的第一个问题,并且,考虑到您当前的代码
至于你的第二个问题(本
内):其中,
此
是包装为对象的值value
是当前索引处数组元素的值,而不是整个数组的值。换句话说,您不需要在此上下文中对value
或this
使用[index]
来获取当前数组元素。对于此代码,value
和this
是相同的,因为value
已经是一个对象
对于您想要的,您可以只使用value
(假设数组的所有元素都已经是对象,您可以使用this
,但是使用value
是一个更好的习惯):
到您的第一个问题,并且,考虑到您当前的代码
至于你的第二个问题(本
内):
其中,此
是包装为对象的值value
是当前索引处数组元素的值,而不是整个数组的值。换句话说,您不需要在此上下文中对value
或this
使用[index]
来获取当前数组元素。对于此代码,value
和this
是相同的,因为value
已经是一个对象
对于您想要的,您可以只使用value
(假设数组的所有元素都已经是对象,您可以使用this
,但是使用value
是一个更好的习惯):
在添加到变量implantFamilies
之前,您只需检查是否存在这种情况,注意:当您使用JSON字符串时,一旦解析它,您就有了一个JavaScript对象。没有JSON对象;)澄清@JeremyJStarcher所说的话。JSON的字面意思是“Javascript对象表示法”。当然,这太迂腐了。我甚至经常听到它,但类似于说“ATM机”。首字母缩略词已经表示它是一个对象,就像ATM的首字母缩略词已经表示它是一台机器一样。另见:“PIN码”等。伊米安人认为这只是一个迂腐的问题,我不在乎(这么多)。问题是,人们认为JSON对象在某种程度上是特殊的,或者与“常规”JavaScript对象和数组不同,因此,他们从不寻找正常的答案,或者他们放弃了这些答案,因为答案提到了“对象”或“数组”,他们显然在处理“JSON”之类的东西。“误会造成了真正的问题。”杰里米·塔彻肯定。大多数人不知道数组是javascript对象。但是是的,它仍然是迂腐的。公平地说,它们实际上与普通物体“特殊或不同”。也就是说,它们是可序列化的,这意味着您无法附加函数,它们将在序列化过程中被剥离。这是我