Javascript 如何仅选择一些JSON对象?

Javascript 如何仅选择一些JSON对象?,javascript,jquery,json,Javascript,Jquery,Json,嗨,我有一个脚本可以解析本地JSON对象(目前只是为了显示一个列表) 目前,该列表显示了所有元素。如何修改此脚本以仅显示带有“loadInitially”:“1”的脚本 另外,一个快速的语法问题,我觉得这行 implantFamilies += implantData.implantFamilies[index].familyDisplay + "<br />"; implantFamilies+=implantData.implantFamilies[index].family

嗨,我有一个脚本可以解析本地JSON对象(目前只是为了显示一个列表)

目前,该列表显示了所有元素。如何修改此脚本以仅显示带有“loadInitially”:“1”的脚本


另外,一个快速的语法问题,我觉得这行

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对象。但是是的,它仍然是迂腐的。公平地说,它们实际上与普通物体“特殊或不同”。也就是说,它们是可序列化的,这意味着您无法附加函数,它们将在序列化过程中被剥离。这是我