从对象获取值并将其提供给另一个对象

时间:2015-10-21 22:04:05

标签: javascript arrays angularjs object

嗨,伙计们这里有一个真正的下巴。

我需要从对象内部的数组中获取值

$scope.document=[]
$scope.accounts=[{name:"123"},{name:"124"},{name:"125"}]

我想拿第一个数组并将其添加到$ scope.document我需要在循环中执行此操作。

所以最后我想说,如果$ scope.accounts有名称124做某事,$ scope.document有名称123做其他事情

2 个答案:

答案 0 :(得分:0)

以下是使用基本JavaScript的示例:

var documents = [],
    accounts  =[ { name: '123' }, { name: '124' }, { name: '125' } ];

var doc = find(accounts, function(o) { return o.name === '123'; });

if (doc) documents.push(doc);

function find(arr, condition) {
    for (var i = 0; i < arr.length; i++)
        if (condition(arr[i])) { return arr[i]; break; }
}

https://jsfiddle.net/nLtjtu53/

在数组中查找对象后,您可以使用任何逻辑,我只是​​将其添加到此示例的文档中。

如果您想使用某些内置Array功能,这是一种可能性:

function find(arr, prop, value) {
    var index = accounts.map(function(o) { return o[prop]; }).indexOf(value);

    return arr[index];
}

请注意,并非所有浏览器都受支持。

您还可以使用像Underscore.js这样提供大量此类功能的库。

答案 1 :(得分:0)

我不明白第一个emtpy数组与它有什么关系,但你可以遍历第二个数组并按如下方式检查每个值:

$scope.accounts.forEach(function(obj) {
    switch (obj.value) {
    case 123:
        //Statements executed when obj.value = 123.
        //For instance: add this obj to the other array:
        $scope.document.push(obj);
        break;
    case 124:
        //Statements executed when obj.value = 124 
        break;
    default:
        //Statements executed when none of the values match 
        break;
    }
});