gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:54:29 25 4
gpt4 key购买 nike

我有一组 json 对象。

  1. 语言
  2. 用户详细信息

用户详细信息有语言字段 - 该字段有超过 1 个值。这是我的示例 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}}

但它不起作用。如果这有效,我们可以将语言代码作为参数传递,并且我可以在 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

关于javascript - 如何从另一个 JSON 对象查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782982/

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