首页 > 解决方案 > 在 Javascript 中创建符合高度特定格式的对象数组

问题描述

我需要创建一个具有非常特定格式的对象数组:

        var tags = [
            { key: "Cat In the Hat", value: 26 },
            { key: "One Fish Two Fish", value: 19 },
            { key: "Green Eggs and Ham", value: 18 }
                    ]

我有一个二维的键(字符串)和值(整数)数组:

           books[0][0] = "Cat in the Hat";
           books[1][0] = 26;
           books[0][1] = "One Fish Two Fish";
           books[1][1] = 19;
           books[0][2] = "Green Eggs and Ham";
           books[1][2] = 18;

我尝试遍历 books[] 数组以将每个元素输出为字符串,这会将整个元素放在引号中。我试过用

'key : '+books[0][0]+', value: '+books[1][0];

但是“key”和“value”被视为字符串,因此放在引号中。我已经尝试映射数组,但我未能正确使用语法:

    tags = books.map( function( key ) {
    return key.map( function( value ) { 
        return value.map( value ); 
    } );
} )

产生“value.map”不是一个函数。我知道必须有办法做到这一点,我怀疑 array.map 是这种方式,但数组和对象如何吐出数据的机制、映射二维数组的复杂性以及对此的特定格式需求是做我的头。

标签: javascriptarraysstring

解决方案


您可以使用 map over books[0] 作为键,并在回调中添加 books[1] 的值。

function createTags(books) {
    let tags = books[0].map( function(key, i){
        return {"key": key, "value": books[1][i]}        
    }.bind(this));
    return tags;
}
        
let books = [0, 1];
books[0] = [];
books[1] = [];

books[0].push("Cat in the Hat");
books[1].push(26);

books[0].push("One Fish Two Fish");
books[1].push(19);

books[0].push("Green Eggs and Ham");
books[1].push(18);

console.log( createTags(books) );


推荐阅读