问题:开发一个包含1000个对象的数组(具有属性名称和编号,如图所示)。
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}}函数不起作用,还有第三个问题应该怎么做?>
答案 0 :(得分:2)
一些想法:
1)仅构造函数应以大写字母开头,函数应按惯例用大写字母表示,因此应为converter
2)您不会调用converter()
,因此它永远不会执行
3)确保var n
和var sample
的代码正确缩进。
4)如果省略if
或for
之后的括号,则只有以下语句会进入分支,因此您可以:
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
是一个数组,您想更改第i
个higher
号的名称,您可以使用{{ 1}}
6)higher[i].name
不在大写中,您想在其上调用"John1"
(toUpperCase
)
第三个问题应该怎么做?
我想修正您的代码,然后做第二个问题就足够了。
您可以继续阅读:
答案 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;
}