我正在尝试创建一个构建具有动态长度的数组的简单算法。
然后,它将逐个替换一个项目,然后是两个,然后是三个,依此类推,直到剩下的唯一项目为第一个和最后一个。
像这样:12345
1*345 // it never touches the first
12*45
123*5 // it doesn't ever touch the last item
1**45
12**5
1***5 // done, nowhere else to go
我整理了一个简单的演示来展示我正在尝试做的事情。
var length = 6,
array = [],
log = document.getElementById("log"),
edited,
j,
i;
for (i = 1; i <= length; i++) {
array.push(i);
}
log.innerHTML += array.join(" ") + "<br><br>";
for (i = 1; i < (length - 1); i++) {
edited = array.concat();
for (j = i; j < (length - 1); j++) {
edited[j] = "*";
log.innerHTML += edited.join(" ") + "<br>";
}
log.innerHTML += "<br>";
}
它工作正常,唯一的问题是它出了故障。 现在它似乎只按星号的数量,然后按索引进行迭代。我需要它做相反的事情。
// it does this
12345
1*345
1**45
1***5
12*45
12**5
123*5 // out of order
如果有人可以提供帮助那会很棒,因为我真的很茫然!
答案 0 :(得分:1)
这应该可以完成。
var gulp = require('gulp');
var gutil = require('gulp-util');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var watchify = require('watchify');
var reactify = require('reactify');
gulp.task('default', function() {
var bundler = watchify(browserify({
entries: ['./src/app.jsx'],
transform: [reactify],
extensions: ['.jsx'],
debug: true
}));
function build(file) {
if (file) gutil.log('Recompiling ' + file);
return bundler
.bundle()
.on('error', gutil.log.bind(gutil, 'Browserify Error'))
.pipe(source('main.js'))
.pipe(gulp.dest('./'));
};
build();
bundler.on('update', build);
});
答案 1 :(得分:0)
这似乎运作良好:
str = "1234567"
len = str.length;
for(var stars = 1; stars < len - 1; stars++) {
for(var pos = 1; pos < len - stars; pos++) {
var s = str.substr(0, pos)
+ new Array(stars + 1).join("*")
+ str.substr(pos + stars);
document.write(s + "<br>");
}
}
&#13;