从对象

时间:2018-06-12 13:16:58

标签: javascript vue.js

我正在Vue工作并尝试将我收集的一些值发送到服务器,但是我发现当前的实现有点令人沮丧。

我在Vue方法中有一个函数,它从原始对象POST我收集的值:

    var inputvalues = {};
    // Get values from all inputs
    for (key in this.entries) {
        var val = this.entries[key].value;

        if (val != undefined) {
            console.log(key,val);
            Vue.set(inputvalues,key,val)
        }
    }

    [ Here is the AJAX part which sends 'inputvalues' to the server - not so relevant]

对象如下所示:

entries: {
    something1: {
        options: {
            "option1":"Option 1",
            "option2":"Option 2",
            "option3":"Option 3"
        },
        visible:true,
        value:undefined
    },
    something2: {
        options: {
            "one":"One",
            "two":"Two",
        },
        visible:true,
        value:undefined
    }
}

这个“有效”,但我对结果不满意。

是否有类似this.entries[].value的内容可以获取此Object的所有值,或者我应该在单独的Object中写入输入字段的值,还是......我不知道是哪种方式正确的方式。

提前致谢。

1 个答案:

答案 0 :(得分:1)

也许稍微优雅一点:

const inputvalues = Object.entries(this.entries)
   .map(([k, v]) => ([k, v.value]))
   .reduce((res, [k, v]) => (v !== undefined && (res[k] = v), res), {});

或者功能稍差:

const inputvalues = {};

for(const [key, obj] of Object.entries(this.entries))
  if(obj.value !== undefined)
    inputvalues[key] = obj.value;