繁体   English   中英

在JavaScript中使用对象数组

[英]Working with array of objects in JavaScript

问题:开发一个包含1000个对象的数组(具有属性名称和编号,如图所示)。

  1. 我们需要一个函数来转换每个对象,因此名称是大写的,并且值是原始对象的5倍并存储到较高的变量中。 同样,另一个函数将转换每个对象,以便其名称为小写且值是原始对象的3倍,然后将其存储到little变量中。
  2. 我们需要一个函数,它的每个对象在较高的 ,并认为所有的对象太少 ,平均分配到它。 实施例:30在较高的物体被均匀地由6 分割。
  3. 2的输出必须是一个较大数字的数组,并且在每个对象中都应该got (对象内部的变量),该对象将包含每个均等地划分较高数的 对象。

我的代码:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>

<script>
    var n = 1000;
var sample = [];
for (var i = 0; i < n; i++) sample.push({
   name:'John' + i,
   value: i 
});
console.log(sample);

function Converter() {
    var n = 1000;
    var higher = sample;
    for (var i = 0; i < n; i++) higher.name = 'John' + i;
    higher.value = i * 5;
    console.log(higher);
}
    </script>

</body>
</html>

创建了对象数组,并且该数组符合问题的预期/要求,但是higherconverter函数不起作用,还有第三个问题应该怎么做?

一些想法:

1)仅构造函数应以大写字母开头,函数应按惯例用驼峰式表示,因此应将其converter

2)您不调用converter()因此它永远不会执行

3)确保缩进您的代码var nvar sample应该在同一深度。

4)如果在iffor之后省略方括号,则只有以下语句进入分支,因此您可以:

 for (var i = 0; i < n; i++)
     higher.name = 'John'+i;
 higher.value = i*5;

因此,第二行甚至没有在循环中执行,您需要:

for (var i = 0; i < n; i++) {
    higher.name = 'John'+i;
    higher.value = i*5;
}

5) higher.name毫无意义,因为higher是一个数组,您想更改第ihigher数字的名称,您可以使用higher[i].name

6) "John1"不是大写字母,您想在其上调用toUpperCase("John1").toUpperCase()

还有第三个问题应该怎么做?

我想修正您的代码并做第二个问题就足够了。

您可以继续阅读:

编码风格很重要

js数组迭代

您还应该在这里尝试以更结构化的方式考虑您的代码。 我建议为每个问题编写单独的函数并给它们起有意义的名字。 也许像下面这样:

var n = 1000;
var sample = [];
for (var i = 0; i < n; i++) sample.push({
    name: 'John' + i,
    value: i
});
console.log(sample);

var higher = convertToHigher(sample);
var little = convertToLittle(sample);
var higherWithDivisors = findAllDivisors(higher, little);

function convertToHigher(arr) {
    var newArr = [];
    // TODO: iterate through each entry in arr, create a new modified object 
    // with a higher value and add it to newArr
    return newArr;
}

function convertToLittle(arr) {
    var newArr = [];
    // TODO: iterate through each entry in arr, create a new modified object
    // with a lower value and add it to newArr
    return newArr;
}

function findAllDivisors(arr1, arr2) {
    var newArr = [];
    // TODO: solve problem 3 here
    return newArr;
}

暂无
暂无

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

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