gpt4 book ai didi

javascript - AngularJS 比较两个(作用域)数组并且只发布 'non-same' 结果(2018)

转载 作者:行者123 更新时间:2023-11-30 14:28:11 25 4
gpt4 key购买 nike

我有两个数组,我想比较 ID,如果一个数组的 ID 在另一个数组中不存在,我将使用 Http Post 添加它。

这是构建:

$scope.Games = [{id:1,Name:"BatMan"},
{id:2,Name:"SpiderMan"},
{id:2,Name:"Hulk"}];

$scope.NewGames = [{id:1,Name:"BatMan"},
{id:2,Name:"SpiderMan"},
{id:3,Name:"Hulk"},
{id:4,Name:"DeadPool"},
{id:5,Name:"IronMan"}, ,
{id:6,Name:"DrStrange"}];

所以我在两个 $scope 中使用 GET 加载所有游戏和新游戏现在我想在 id_game 上比较这两个,所以我在想这样的事情但无法让它工作,http 部分可以找到但没有 indexOf,如果它们会在 DB 中添加所有游戏已经存在,这就是我想要阻止的。

angular.forEach($scope.NewGames, function (value, index) {

if ($scope.Games.indexOf(value.id ) === -1) {

console.log('New game to add' + value.Name)

$http({
method: 'POST',
url: 'http.....\addGame',
data: value
})
}
})

最佳答案

因为 $scope.Games 是对象数组,所以使用 findIndex() 而不是 indexOf()

findIndex() 方法对数组中存在的每个元素执行一次函数:

如果找到函数返回真值的数组元素,findIndex() 将返回该数组元素的索引(并且不检查剩余值)。如果没有找到这样的元素,则返回 -1。在下面给出的示例中:

o 是数组 games 的每个对象/元素,我们检查每个对象的 id(o.id) 属性是否相等games 数组与 findId。如果 games 数组中有一个元素,其中 id 与 findId 匹配,则条件变为真,并且 findIndex 返回该元素/对象的索引。

var games = [{id:1,value:"abc"},{id:2,value:"dfg"},{id:2,value:"fdf"}];
var findId = 2;
// when object with id is present in array
if(games.findIndex((o)=>o.id == findId) > -1);
console.log("Found");
findId= 6;
//when object with id is not present in array
if(games.findIndex((o)=>o.id == findId) == -1);
console.log("Not found");

关于javascript - AngularJS 比较两个(作用域)数组并且只发布 'non-same' 结果(2018),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51618211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com