Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修改对象数组中的json对象_Javascript_Arrays_Angularjs_Json_Asp.net Web Api - Fatal编程技术网

Javascript 如何修改对象数组中的json对象

Javascript 如何修改对象数组中的json对象,javascript,arrays,angularjs,json,asp.net-web-api,Javascript,Arrays,Angularjs,Json,Asp.net Web Api,我有一个对象数组 // This is should be taken from database $scope.users = [{"$id":"1","UserID":3,"Name":"A","Selected":false},{"$id":"2","UserID":4,"Name":"B","Selected":false},{"$id":"3","UserID":5,"Name":"C","Selected":false},{"$id":"4","UserID":6,"Name":"D

我有一个对象数组

// This is should be taken from database
$scope.users = [{"$id":"1","UserID":3,"Name":"A","Selected":false},{"$id":"2","UserID":4,"Name":"B","Selected":false},{"$id":"3","UserID":5,"Name":"C","Selected":false},{"$id":"4","UserID":6,"Name":"D","Selected":false}]
然后是一个数组,其中包含上一屏幕中选定的用户

$scope.usersSelected = [{"$id":"3","UserID":5,"Name":"C","Selected":true,"$$hashKey":"object:83"},{"$id":"4","UserID":6,"Name":"D","Selected":true,"$$hashKey":"object:84"}]
我想更新
$scope.users的
所选
属性,如果在
$scope.usersSelected
中找到它们。因此,我迭代了
$scope.users选中的
UserID
,然后在
$scope.users的
UserID
中搜索它的
UserID

for (var i = 0; i < $scope.usersSelected.length; i++) {
    var obj = $.grep($scope.users, function (e) { return e.UserID == $scope.usersSelected[i].UserID; });
    obj.Selected = true;
}
for(var i=0;i<$scope.usersseselected.length;i++){
var obj=$.grep($scope.users,函数(e){return e.UserID==$scope.usersSelected[i].UserID;});
所选对象=真;
}
但是所选的
属性将不会更新。上面的代码有什么问题

其次,我需要一个关于上面数组中数据的解释,为什么从数据库填充数据时总是有
“$id”
,从另一个屏幕获取数据时总是有
“$$hashKey”
?这些价值观从何而来


注意:我正在使用AngularJS和ASP.NET Web API 2从数据库获取数据。

使用javascript测试

usersSelected =  $scope.usersSelected;

users = $scope.users;

for (var i=0;i<users.length;i++){

  if (usersSelected.some(function(e) e.UserID == users[i].UserID)) {
    users[i].Selected = true;
    console.dir(users[i]);
  }


}
usersSelected=$scope.usersSelected;
users=$scope.users;

对于使用javascript测试的(var i=0;i)

usersSelected =  $scope.usersSelected;

users = $scope.users;

for (var i=0;i<users.length;i++){

  if (usersSelected.some(function(e) e.UserID == users[i].UserID)) {
    users[i].Selected = true;
    console.dir(users[i]);
  }


}
usersSelected=$scope.usersSelected;
users=$scope.users;

对于(var i=0;i测试,工作绝对正常

 $scope.users = [ {
        "$id" : "1",
        "UserID" : 3,
        "Name" : "A",
        "Selected" : false
    }, {
        "$id" : "2",
        "UserID" : 4,
        "Name" : "B",
        "Selected" : false
    }, {
        "$id" : "3",
        "UserID" : 5,
        "Name" : "C",
        "Selected" : false
    }, {
        "$id" : "4",
        "UserID" : 6,
        "Name" : "D",
        "Selected" : false
    } ];

    $scope.usersSelected = [ {
        "$id" : "3",
        "UserID" : 5,
        "Name" : "C",
        "Selected" : true,
        "$$hashKey" : "object:83"
    }, {
        "$id" : "4",
        "UserID" : 6,
        "Name" : "D",
        "Selected" : true,
        "$$hashKey" : "object:84"
    } ]
    var users = $scope.users;
    var usersSelected = $scope.usersSelected;
    for (var i = 0; i < users.length; i++) {
        for (var j = 0; j < usersSelected.length; j++) {
            debugger
            if (users[i].UserID == usersSelected[j].UserID) {
                console.log(users[i].UserID)
                console.log(usersSelected[j].UserID)
                users[i].Selected = true;

            }
        }

    }

    console.log(users)
    console.log(usersSelected);
$scope.users=[{
“$id”:“1”,
“用户ID”:3,
“姓名”:“A”,
“选定”:false
}, {
“$id”:“2”,
“用户ID”:4,
“名称”:“B”,
“选定”:false
}, {
“$id”:“3”,
“用户ID”:5,
“姓名”:“C”,
“选定”:false
}, {
“$id”:“4”,
“用户ID”:6,
“名称”:“D”,
“选定”:false
} ];
$scope.usersSelected=[{
“$id”:“3”,
“用户ID”:5,
“姓名”:“C”,
“选定”:正确,
“$$hashKey”:“对象:83”
}, {
“$id”:“4”,
“用户ID”:6,
“名称”:“D”,
“选定”:正确,
“$$hashKey”:“对象:84”
} ]
var users=$scope.users;
var usersSelected=$scope.usersSelected;
对于(var i=0;i
经过测试,工作完全正常

 $scope.users = [ {
        "$id" : "1",
        "UserID" : 3,
        "Name" : "A",
        "Selected" : false
    }, {
        "$id" : "2",
        "UserID" : 4,
        "Name" : "B",
        "Selected" : false
    }, {
        "$id" : "3",
        "UserID" : 5,
        "Name" : "C",
        "Selected" : false
    }, {
        "$id" : "4",
        "UserID" : 6,
        "Name" : "D",
        "Selected" : false
    } ];

    $scope.usersSelected = [ {
        "$id" : "3",
        "UserID" : 5,
        "Name" : "C",
        "Selected" : true,
        "$$hashKey" : "object:83"
    }, {
        "$id" : "4",
        "UserID" : 6,
        "Name" : "D",
        "Selected" : true,
        "$$hashKey" : "object:84"
    } ]
    var users = $scope.users;
    var usersSelected = $scope.usersSelected;
    for (var i = 0; i < users.length; i++) {
        for (var j = 0; j < usersSelected.length; j++) {
            debugger
            if (users[i].UserID == usersSelected[j].UserID) {
                console.log(users[i].UserID)
                console.log(usersSelected[j].UserID)
                users[i].Selected = true;

            }
        }

    }

    console.log(users)
    console.log(usersSelected);
$scope.users=[{
“$id”:“1”,
“用户ID”:3,
“姓名”:“A”,
“选定”:false
}, {
“$id”:“2”,
“用户ID”:4,
“名称”:“B”,
“选定”:false
}, {
“$id”:“3”,
“用户ID”:5,
“姓名”:“C”,
“选定”:false
}, {
“$id”:“4”,
“用户ID”:6,
“名称”:“D”,
“选定”:false
} ];
$scope.usersSelected=[{
“$id”:“3”,
“用户ID”:5,
“姓名”:“C”,
“选定”:正确,
“$$hashKey”:“对象:83”
}, {
“$id”:“4”,
“用户ID”:6,
“名称”:“D”,
“选定”:正确,
“$$hashKey”:“对象:84”
} ]
var users=$scope.users;
var usersSelected=$scope.usersSelected;
对于(var i=0;i
如果您想删除
$hashkey
并像这样删除另一个
angular.toJson()
它将删除man@SakthiSureshAnand,太好了,感谢您提供的信息,所以在angular中打印json时,应该使用
angular.toJson()
而不是
json.stringify()吗
?我建议你去
下划线.js
如果你想删除
$hashkey
,它有所有像Stuff一样迭代的方法,像这样做
angular.toJson()
它会删除man@SakthiSureshAnand,太好了,感谢您提供的信息,所以在angular中打印json时,是否应该使用
angular.toJson()
而不是
JSON.stringify()
?我建议您使用
underline.js
它有所有像Stuff一样迭代的方法,因为您使用的是angular,$不是jquery。您可以尝试将其转换为for Loop吗是的,但它仍然不起作用,下面是代码
var users2=$scope.users;var usersSelected2=$scope.usersSelected;console.log('users2='+JSON.stringify(users2));$(users2).each(函数(i,d){if(usersSelected2.some(函数(e){e.UserID==d.UserID})){d.Selected=true;}});console.log('users2='+JSON.stringify(users2))
编辑了答案,你能运行那个精确的代码并查看一下吗。我已经调试过了,而且条件永远不会是真的,因为你使用的是angular,$不是jquery。你能试着将它转换为for Loop吗是的,但它仍然不起作用,下面是代码
var users2=$scope.users;var usersSelected2=$scope.usersSelected;console.log('users2='+JSON.stringify(users2));$(users2).each(函数(i,d){if(usersSelected2.some(函数(e){e.UserID==d.UserID})){d.Selected=true;}});console.log('users2='+JSON.stringify(users2))
编辑了答案,你能运行那个精确的代码并查看一下吗。我已经调试过了,条件永远不会是真的。谢谢,它是有效的,但我们可以使用
索引函数来获取对象吗?在使用
$之前。grep
我使用了
数组。索引函数()
但它不起作用。因为您正在迭代json whic的数组