繁体   English   中英

如何从另一个JSON对象中查找值

[英]How to find values from another JSON object

我有一组json对象。

  1. 语言能力
  2. 使用者详细资料

“用户详细信息”具有“语言”字段-具有多个值。 这是我的示例json

 $scope.languages = [
            {id: 1, text: 'English'},
            {id: 2, text: 'French'},
            {id: 3, text: 'Hindi'},
            {id: 4, text: 'Telugu'}
          ];

    $scope.users = [{name: 'first user', status: 1,language:"1"},
                    {name: 'second user', status: 2,language:"1,2"},
                    {name: 'third user', status: 3,language:"1,3,4"}];

在我看来,我想列出用户名和语言。

<li ng-repeat="user in users">{{user.name}} -  {{testString}}</li>

我知道要做单值。 但是对于多个值。 我有逻辑,但我不知道如何实现。 我在想 首先,我必须拆分用户语言字符串并更改为数组,然后找到语言ID的索引,然后返回语言文本。

我有从ID返回语言名称的代码。

var foundItem = $filter('filter')($scope.languages, { id: 3  }, true)[0];
var index = $scope.languages.indexOf(foundItem );
$scope.result = $scope.languages[index].text;

因此,现在的问题是如何在用户名旁边打印语言?

我尝试过这样

$scope.testString = function() {
    return "return test string";
}

{{testString}}

但是它不起作用。 如果这行得通,我们可以将langugae代码作为参数传递,并且我可以在testString函数中添加搜索代码。

谢谢

testString是一个函数,因此您不能像{{testString}}那样使用它,而必须调用该函数{{testString()}}

您可以像这样简化您的代码。

    $scope.getLanguages = function (langs) {
      var l = [];
      angular.forEach(langs.split(','), function (lang) {
        l.push(findLanguageTextById(parseInt(lang)));
      })
      return l.join(', ');
    }    
    function findLanguageTextById (langId) {
      for(var i = 0;i<$scope.languages.length;i++) {
        if ($scope.languages[i].id == langId) {
          return $scope.languages[i].text;
        }
      }
    }

我为您的问题创建了一个工作演示,请看一下。

http://plnkr.co/edit/Cdl8y58IExoVSZV6lp76?p=preview

我认为您没有调用该函数,

$scope.testString = (function() {
    return "return test string";
})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM