javascript - 迭代时设置对象的属性
问题描述
我正在使用 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 存储在文本字段中)
解决方案
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)
推荐阅读
- mysql - Postgress vs MySQL:命令不同步;
- azure - Azure 数据工厂表存储转换错误
- android - 无法使用 ConstraintLayout 将按钮放置到 NestedScrollView 的底部
- macos - Word 加载项:MAC IndexedDB 行为很奇怪
- python - 从主菜单转换到游戏 pygame 时出错
- javascript - 材料 UI 自动完成,redux-form 值被破坏
- c# - Avalonia UI 弹出式覆盖
- html - 创建一个高度相等的三列
- flutter - 行内的容器高度
- javascript - FOR 循环和数组问题