在我的angularjs应用中,我从API获取JSON对象。 我有一个输入字段,可以在其中手动输入ID,如果存在具有此ID的项目,则需要更改其属性。 我还将这个ID存储到sessionStorage,所以当用户刷新页面时,他会像刷新之前一样获得价值。
这里是API中的json,我需要将ON THE FLY属性SHOW更改为true(如果存在)
$scope.tableParams.data = [
{id: 1015, type: "ssss", show: false},
{id: 1016, type: "ssss", show: false},
{id: 1017, type: "ssss", show: false},
{id: 1018, type: "ssss", show: false}
]
获取输入值并将其存储到会话存储并更改SHOW属性的功能
$scope.getIndex = function (indexOfRow) { //indexOfRow is passed data from input field
//here I want to change show to true for passed id
sessionStorage.setItem("indexOfOpenedRow", JSON.stringify(indexOfRow));
}
我尝试从here回答,但对我不起作用
我也尝试过此方法,但始终获得undefined
function findId(array, id) {
var i, found, obj;
for (i = 0; i < array.length; ++i) {
obj = array[i];
if (obj.id == id) {
console.log(obj);
return obj;
}
}
return undefined; // <= You might consider null or undefined here
}
$scope.getIndex = function (indexOfRow) { //indexOfRow is passed data from input field
//here I want to change show to true for passed id
angular.forEach($scope.tableParams.data, function(key, value){
var result = findId(key.id, indexOfRow);
console.log(result);
});
sessionStorage.setItem("indexOfOpenedRow", JSON.stringify(indexOfRow));
}
答案 0 :(得分:2)
Filter是您要搜索的功能。据我了解,通过阅读代码,您想将一个单独的ID与JSON中的ID进行比较吗?如果我错了,在这里推荐,我将编辑答案:
function findIDAndSetShowingTrue(array, id) {
return array.filter(curr=> curr.id === id).map(curr => ({...curr, show: true}));
}