【问题标题】:JavaScript: How can we create as many objects as necessary based on one array/vector lenght?JavaScript:我们如何根据一个数组/向量长度创建尽可能多的对象?
【发布时间】:2018-03-13 23:34:22
【问题描述】:

我们如何在 JavaScript 中基于一个数组/向量长度创建尽可能多的对象?我们可以像业余爱好者(我)所期望的那样以简单的方式做到这一点吗?

假设我们有以下内容:(sn-p not working, yet)

  • 两个数组
  • 对象的函数
  • 基于上述Object函数创建对象的函数
  • 返回另一个包含已创建对象的数组(此处为 x)

可以用这种方式用对象填充数组 (x) 吗? 谢谢!

<!DOCTYPE html>
<html>
<body>
<h1>TEST:</h1>
<input onclick="running()" type="submit" value="RUN TEST">
<script>
    function running(){

        array1 = ["A","B","C"]; /*array1 and array2 => same lenght*/
        array2 = [10,20,30];

        function Obj(letters, numbers) {this.letters = letters; this.numbers = numbers;}

        function CreateObj(array1,array2){
                    var x = [];
                    for (var i=0;i<=array1.length;i++){
                        var created = new Obj();
                        created.letters= array1[i];
                        created.numbers= array2[i];
                        x.push(created);
                    }
                    return  alert(x);
        }
    CreateObj(array1,array2)
    }
</script>
</body>
</html>

编辑:我已经以更简单的方式解决了我需要的问题(至少对我来说,更容易理解发生了什么):

    function Obj(letters, numbers) {this.letters = letters; this.numbers = numbers;}
    array1 = ["A","B","C"]; /*array1 and array2 => same lenght*/
    array2 = [10,20,30];

    function CreateObj(array1,array2) {
            var x = [];
            for (var i=0;i<=array1.length-1;i++){
                var newArray = new Obj(array1[i],array2[i]);
                x.push(newArray);
            }
            return console.log(x); /*returns an Array with array1.length objects...*/
    }
CreateObj(array1,array2);

【问题讨论】:

  • 你需要把这个从i&lt;=array1.lenght;改成i&lt;=array1.length;
  • 谢谢斯芬克斯

标签: javascript arrays object for-loop


【解决方案1】:

如果我理解你想要做什么,一个简单的map 可能是最干净的:

const array1 = ["A","B","C"]; /*array1 and array2 => same lenght*/
const array2 = [10,20,30];

function Obj(letters, numbers) {this.letters = letters; this.numbers = numbers;}
let mapped = array1.map((item, i) => new Obj(item, array2[i]))

console.log(mapped)

【讨论】:

  • 没错!这就是我喜欢这个网站的原因,谢谢马克。
  • 这会简化事情吗? array1.map((letters, i) =&gt; ({letters, numbers: array2[i]}))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
相关资源
最近更新 更多