简体   繁体   English

如何将键/值对添加到另一个 object 中的 JavaScript object

[英]How can I add a key/value pair to a JavaScript object which is in an another object

I'm asking your help for the following code:我正在向您寻求以下代码的帮助:

function vimeoImport() {

let videosToBeImported = [{
    uri: "/videos/442638455",
    name: "FOMME_1387_VD1",
    modifed_time: "2020-07-29T09:24:48+00:00"
},{
    uri: "/videos/442056086",
    name: "FOMME_1387_VD2",
    modifed_time: "2020-07-29T09:25:27+00:00"
},{
    uri: "/videos/442638455",
    name: "FOMME_2387_VD1",
    modifed_time: "2020-07-29T09:24:48+00:00"
}];

let frtVideoUrlValues = {};

for (var index in videosToBeImported) {
    var videos = videosToBeImported[index];
    let videoName = videos.name;

    let splitName = videoName.split('_');
    let targetedVariationGroup = splitName[0].concat('_', splitName[1]);
    let positionvideo = splitName[2];

    let variationGroupParams = {};
    variationGroupParams[positionvideo] = videos.uri;
    if (targetedVariationGroup in frtVideoUrlValues) {
        frtVideoUrlValues[targetedVariationGroup] += variationGroupParams;
    } else {
        frtVideoUrlValues[targetedVariationGroup] = variationGroupParams;
    }
}

} }

I tried to add a key/value pair (the key is a variable) in the targetedVariationGroup object which is in the frtVideoUrlValues object.我试图在 frtVideoUrlValues object 中的targetedVariationGroup object 中添加一个键/值对(键是一个变量)。 When I try, I see the new key/value pair in the targetedVariationGroup but the merge is not functional and the 2 objects are not accessible:当我尝试时,我在 targetVariationGroup 中看到了新的键/值对,但合并不起作用,并且 2 个对象不可访问:

在此处输入图像描述

And I try to obtain an object like this:我尝试像这样获得 object:

在此处输入图像描述

As, you didn't provide any output format, I am guessing the output should look like as follows(If this is not what you've wanted, pls provide proper output format):因为,您没有提供任何 output 格式,我猜 output 应该如下所示(如果这不是您想要的,请提供正确的 Z78E6221F6393D1356681DB398DZ 格式)

{
  FOMME_1387: [
    { VD1: '/videos/442638455' },
    { VD2: '/videos/442056086' }
  ],
  FOMME_2387: [
    { VD1: '/videos/442638455' }
  ]
}

Now, to achieve this you should write code as follow:现在,要实现这一点,您应该编写如下代码:

function vimeoImport() {
    let videosToBeImported = [
        {
            uri: "/videos/442638455",
            name: "FOMME_1387_VD1",
            modifed_time: "2020-07-29T09:24:48+00:00"
        },
        {
            uri: "/videos/442056086",
            name: "FOMME_1387_VD2",
            modifed_time: "2020-07-29T09:25:27+00:00"
        },
        {
            uri: "/videos/442638455",
            name: "FOMME_2387_VD1",
            modifed_time: "2020-07-29T09:24:48+00:00"
        }
    ];


    let frtVideoUrlValues = {};

    for (var index in videosToBeImported) {
        var videos = videosToBeImported[index];
        let videoName = videos.name;

        let splitName = videoName.split('_');
        let targetedVariationGroup = splitName[0].concat('_', splitName[1]);
        let positionvideo = splitName[2];

        let variationGroupParams = {};
        variationGroupParams[positionvideo] = videos.uri;
        
        // here are the changes I've made
        if(frtVideoUrlValues[targetedVariationGroup] === undefined) {
            frtVideoUrlValues[targetedVariationGroup] = [];
        }

        frtVideoUrlValues[targetedVariationGroup].push(variationGroupParams);
    }

    console.log(frtVideoUrlValues);
}

vimeoImport();

The problem with your code is, you're using + to add object with another object, but + is only used to concat string in javascript.您的代码的问题是,您使用+来添加 object 和另一个 object,但+仅用于连接 javascript 中的字符串。 Instead of what you're doing, you should push objects into array.而不是你在做什么,你应该将对象推入数组。 To add new elements in an array, you've to use push() method.要在数组中添加新元素,您必须使用push()方法。

Also, notice, if key targetedVariationGroup in frtVideoUrlValues is undefined , I've assigned an empty array to targetedVariationGroup as follows:另外,请注意,如果frtVideoUrlValues 中的键 targetsVariationGroupundefined ,我已将一个空数组分配给targetVariationGroup ,如下所示:

frtVideoUrlValues[targetedVariationGroup] = [];

and then, pushed variationGroupParams object in the array as follows:然后,将variationGroupParams object 推入数组中,如下所示:

frtVideoUrlValues[targetedVariationGroup].push(variationGroupParams);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM