繁体   English   中英

使用angularjs和Javascript将对象数组数据中的一个字段转换为另一值

[英]Convert One field in an Object Array data with angularjs and Javascript to another value

在angularjs控制器中,我有以下代码:

var ysshControllers = angular.module('theControllers', []);

ysshControllers.controller('CommonController',
    function($scope, $http, $route) {
        $scope.dbKey = $route.current.customInput;
        $scope.urlToDb = 'https://' + $scope.dbKey + '/.json';
        $http.get($scope.urlToDb).success(function(data) {
            var values = [];
            for (var name in data) {
                values.push(data[name]);
            }
            $scope.Items = values;
            });
            // Initially order by date and time
            $scope.orderProp = 'ac';
    }
);

它创建一个名为Items的对象数组。 关键值只是标记为aaabac等。当用户从下拉菜单中输入数据时,我只想保存诸如1,2,3,4,5类的值,然后再将数据导入回去网站上,将值转换回去。 0 = Bad ; 5 = Very Good 因此,对于每个键名称为ae记录,我都希望将值从1,2,3,4,5转换为Bad,Okay,Fair,Good,Very Good。

我可以弄清楚程序流程,我想知道的是如何使用我猜想的面向对象的JavaScript来引用值。

数据的结构如下:

C5_200630_Option 1

   aa:"Option 1"
   ab:"Toyota"
   ac:6499
   ad:"Truck"
   ae:"Tacoma, Silver, 1/2 ton 4wd"
   af:4

我像这样运行代码:

alert(Object.keys($scope.UsedItems));

它的值为0,1,2,3,4等。因此,我猜$scope.UsedItems中的键值只是数字。 我不知道如何专门访问键和值数据。 我可以在警报中显示数组内容的简单方法是什么?

我用了这一行:

alert(data[name].ad);

这将引用每个名为ad记录中的数据。 这样就给了我一种识别记录中特定项目的方法。

好吧,我想出了一个解决方案:

            if (data[name].af === "3") {
                data[name].af = "Awesome!";
            }

即使我已经找到解决问题的办法,但我仍然几乎不知道自己在做什么。 因此,如果有更好的方法,请告诉我。

你可以这样定义一个数组

var example = ["Bad", "Not Bad", "Fine", "Good", "Very Good"];

而不是每次都只需要像这样检查data [name] .af的值即可

data[name].af = example[data[name].af];

这将为您提供所需的结果data [name] .af = 3应该很好,example [3]是您想要的结果...

暂无
暂无

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

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