首页 > 解决方案 > 迭代时设置对象的属性

问题描述

我正在使用 Laravel(后端)和 Vue.js 制作 SPA。我有以下数组:

访问数组:

["BIU","CEO","Finance","HRD","Group"]

使用权:

["BIU","Group"]

我想将access数组与数组进行比较accessArray,如果有匹配项来更改记录(在 中accessArray)并添加一个true值,否则添加一个false值。我在 Vue 方法中执行此操作。

...到目前为止,我得到了这个:

var foo = ["BIU","CEO","Finance","HRD","Group"];
var bar = ["BIU","Group"];

$.each(bar, function (key, value) {
    if ($.inArray(value, foo) != -1) {
        var position = $.inArray(value, foo);
        console.log(value + ' is in the array.  In position ' + position);
        foo[position] = {name: value, checked: true};
    }
});

将其输出到控制台:

BIU is in the array.  In position 0
Group is in the array.  In position 4

这在 Vue 中:

[
{"name":"BIU","checked":true},
"CEO",
"Finance",
"HRD",
{"name":"Group","checked":true}
]

我想要实现的输出如下:

[
{"name":"BIU","checked":true},
{"name":"CEO","checked":false},
{"name":"Finance","checked":false},
{"name":"HRD","checked":false},
{"name":"Group","checked":true}
]

任何帮助将不胜感激,我在 SO 上查看了许多类似的问题,但似乎找不到这些方面的任何内容。我也尝试在最后添加一个 else 语句,但我(认为)我正在将它转换为一个对象,所以这似乎不起作用。

编辑:

foo 中的数据来自 Laravel 配置设置,因此有些动态

bar 中的数据是从 Laravel ORM 接收的 JSON(其 json 存储在文本字段中)

标签: javascriptjqueryvue.js

解决方案


vanilla javascript的一个选项:

var foo = ["BIU","CEO","Finance","HRD","Group"];
var bar = ["BIU","Group"];

var result = foo.map(name => {
    var checked = bar.indexOf(name) !== -1
    return { name, checked }
})

console.log(result)


推荐阅读