如何从angularjs

时间:2015-09-15 07:53:11

标签: javascript angularjs

我已按以下格式将值存储在对象中,

$scope.modelName = {
    name: {}
};

该值的存储方式与{"APLLE":true,"ORANGE":true}类似。我试图只获取密钥,我试图使用for循环将其存储在另一个对象中。我无法获得价值

for (var i = 0; i < 2 ; i++) {        
    $scope.fruitRulesRules.push({
        field: "fruitName",
        subType: "equals",
        value: Object.Keys($scope.modelName.name[i])
    });
}

提前致谢。

2 个答案:

答案 0 :(得分:1)

Object.keys()返回对象中的键数组。您需要选择用于索引循环的键。你很亲密,但没有雪茄。

请参阅小提琴:http://jsfiddle.net/pzky9owf/1/

var modelName = {
        name: {
            APPLE: true,
            ORANGE: true
        }
    },
    fruitRulesRules = [];

for (var i = 0; i < 2; i++) {
    fruitRulesRules.push({
        field: 'fruitName',
        subType: 'equals',
        /*
            This bit was close. You could could also cache the Object.keys in 
            another variable so its not called in every itteration of the loop if it doesnt change often
        */
        name: Object.keys(modelName.name)[i]
    });
}

console.log(fruitRulesRules);
编辑:你还有Object.Keys,大写K,它的小写k,但我认为这是写小提琴的错字。

再次编辑:正如@KrzysztofSafjanowski在另一条评论中提到的那样,你无法保证Object.keys()的顺序,所以即使上述作品有效也可能无法达到预期效果。

我已经更新了小提琴,以显示键的顺序不重要的不同方式:http://jsfiddle.net/pzky9owf/2/

答案 1 :(得分:0)

我相信您正在访问密钥错误,这会给您一些见解吗?

Object.keys({"APLLE":true,"ORANGE":true})[0] //returns "Apple"

所以你的解决方案可能是:

Object.Keys($scope.modelName.name)[i]