通过手动输入的ID

时间:2018-10-29 08:11:18

标签: javascript angularjs

在我的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));
    }

1 个答案:

答案 0 :(得分:2)

Filter是您要搜索的功能。据我了解,通过阅读代码,您想将一个单独的ID与JSON中的ID进行比较吗?如果我错了,在这里推荐,我将编辑答案:

function findIDAndSetShowingTrue(array, id) {
    return array.filter(curr=> curr.id === id).map(curr => ({...curr, show: true}));
}
  • filter函数遍历数组中的每个子级,并为您提供特定的值( array.filter )。
  • 然后,您可以使用此子项,并将其像if语句一样与其他一些值( current )进行比较。
  • 最后,您将current.id与输入id( current.id === id )进行比较,并返回 current 对象(如果为true)。