Javascript 如何将现有json对象数组中的某些对象复制到新的json数组中

Javascript 如何将现有json对象数组中的某些对象复制到新的json数组中,javascript,angularjs,json,Javascript,Angularjs,Json,我的JSON对象数组是: [{ "stateCd": "IL", "value": "Illinois", "selected": "false" }, { "stateCd": "CA", "value": "California", "selected": "true" }, { "stateCd": "NY", "value": "New york", "selected": "false" }] 我想创建一个新的JSON对象数组,它应该只包含上面数组

我的JSON对象数组是:

[{
  "stateCd": "IL",
  "value": "Illinois",
  "selected": "false"
},
{
  "stateCd": "CA",
  "value": "California",
  "selected": "true"
},
{
  "stateCd": "NY",
  "value": "New york",
  "selected": "false"
}]
我想创建一个新的JSON对象数组,它应该只包含上面数组中的那些对象,其中
selected:false

我试过了
concat

angular.forEach($scope.oldJsonArr,函数(值,索引){
if($scope.oldJsonArr[index].selected==“false”){
$scope.newJsonArr.concat($scope.oldJsonArr[index]);
}
});              
但这将返回未定义的
newJsonArr
。 感谢您的帮助

以下是代码:

$scope.oldJsonArr = [{"stateCd": "IL", "value": "Illinois", "selected": "false"}, {
        "stateCd": "CA",
        "value": "California",
        "selected": "true"
    }, {"stateCd": "NY", "value": "New york", "selected": "false"}];

    $scope.newJsonArr = [];

    angular.forEach($scope.oldJsonArr, function (value, index) {
        if ($scope.oldJsonArr[index].selected == "false") {
            $scope.newJsonArr.push($scope.oldJsonArr[index]);
        }
    });

    console.info($scope.newJsonArr);
  • 您必须定义变量,否则它们将保持未定义
  • 您必须使用
    .push()
    方法
  • 代码如下:

    $scope.oldJsonArr = [{"stateCd": "IL", "value": "Illinois", "selected": "false"}, {
            "stateCd": "CA",
            "value": "California",
            "selected": "true"
        }, {"stateCd": "NY", "value": "New york", "selected": "false"}];
    
        $scope.newJsonArr = [];
    
        angular.forEach($scope.oldJsonArr, function (value, index) {
            if ($scope.oldJsonArr[index].selected == "false") {
                $scope.newJsonArr.push($scope.oldJsonArr[index]);
            }
        });
    
        console.info($scope.newJsonArr);
    
  • 您必须定义变量,否则它们将保持未定义
  • 您必须使用
    .push()
    方法

  • 您可以使用Array.prototype.filter()方法


    您可以使用Array.prototype.filter()方法


    使用
    JavaScript
    中的
    Filter
    ,而不是使用库实用程序函数

    var-people=[
    {firstname:“Micro”,hasSocialNetworkSite:false,lastname:“Soft”,site:http://microsoft.com" },
    {名字:“Face”,hasSocialNetworkSite:true,姓氏:“Book”,site:http://facebook.com" },
    {姓氏:“Go”,hasSocialNetworkSite:true,姓氏:“ogle”,site:http://google.com" },
    {firstname:“Twit”,hasSocialNetworkSite:true,lastname:“Ter”,site:http://twitter.com" },
    {firstname:“应用程序”,hasSocialNetworkSite:false,lastname:“Le”,站点:http://apple.com" },
    {姓氏:“主”,hasSocialNetworkSite:false,姓氏:“卡”,site:http://mastercard.com" }
    ];
    var filteredResult=people.filter(函数v){
    返回v.hasSocialNetworkSite==true;//筛选出适当的
    });
    文档。编写(“社交网站
    ”; 用于(filteredResult中的变量i){ document.write(filteredResult[i].site+“
    ”)
    }
    JavaScript
    使用
    过滤器
    ,而不是使用库实用程序函数

    var-people=[
    {firstname:“Micro”,hasSocialNetworkSite:false,lastname:“Soft”,site:http://microsoft.com" },
    {名字:“Face”,hasSocialNetworkSite:true,姓氏:“Book”,site:http://facebook.com" },
    {姓氏:“Go”,hasSocialNetworkSite:true,姓氏:“ogle”,site:http://google.com" },
    {firstname:“Twit”,hasSocialNetworkSite:true,lastname:“Ter”,site:http://twitter.com" },
    {firstname:“应用程序”,hasSocialNetworkSite:false,lastname:“Le”,站点:http://apple.com" },
    {姓氏:“主”,hasSocialNetworkSite:false,姓氏:“卡”,site:http://mastercard.com" }
    ];
    var filteredResult=people.filter(函数v){
    返回v.hasSocialNetworkSite==true;//筛选出适当的
    });
    文档。编写(“社交网站
    ”; 用于(filteredResult中的变量i){ document.write(filteredResult[i].site+“
    ”)
    }
    如果使用下划线或简单过滤器,则可以使用下划线.js中的where!thanx…但我不能使用任何其他js文件NP。使用JS中的过滤器。为了更好地理解,请检查我的答案并添加参考资料。结账是的……这很有帮助……谢谢!如果使用下划线或简单过滤器,则可以使用underline.js中的where!thanx…但我不能使用任何其他js文件NP。使用JS中的过滤器。为了更好地理解,请检查我的答案并添加参考资料。结账是的……这很有帮助……谢谢!