使用JavaScript中的对象数组

时间:2018-10-02 20:31:29

标签: javascript html css

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

  1. 我们需要一个函数来转换每个对象,因此名称大写 值是原始值的5倍,并存储在更高中 变量。同样,另一个将每个对象转换为 名称为小写且值是原始名称的3倍,请存储此名称 放入 little 变量。
  2. 我们需要一个函数来获取 higher 中的每个对象并找到所有对象 little 中的对象均匀地划分为多个对象。示例:30英寸 更高对象在中平均除以6。
  3. 2的输出必须是一个更高数字的数组,并且在每个 对象应该有got(对象内部的变量),其中将包含每个 little 均匀划分较高的对象。

我的代码:

<!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>

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

2 个答案:

答案 0 :(得分:2)

一些想法:

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号的名称,您可以使用{{ 1}}

6)higher[i].name不在大写中,您想在其上调用"John1"toUpperCase

  

第三个问题应该怎么做?

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

您可以继续阅读:

Coding style matters

js array iterations

答案 1 :(得分:1)

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

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;
}