所以,我的大脑放屁很大。我正在尝试完成测试规范,并且require输出需要看起来像这样:
{"clojure": {"end": [10, 7], "start": [10, 1]}, "java": {"end": [11, 5], "start": [11, 2]}}
我有一个动态添加对象的数组。这是填充数组的代码:
function findHorizontal(word, grid){
let test = [];
for(let i = 0; i < grid.length; i++){
for(let j = 0; j < word.length; j++){
if (grid[i].includes(word[j])){
let row = grid.indexOf(grid[i]) + 1
let firstLetter = grid[i].indexOf(word[j][0]) + 1
let lastLetter = grid[i].lastIndexOf(word[j].split("")[word[j].split("").length - 1]) + 1
test.push({[word[j]]: {
start: [row, firstLetter],
end: [row, lastLetter]
}
})
}
}
}
return test
}
这是测试的样子:
[{"clojure": {"end": [10, 7], "start": [10, 1]}}, {"java": {"end": [11, 5], "start": [11, 2]}}]
如您所见,以上输出和测试规范输出之间的唯一区别是数组中的括号。
我需要卸下括号,显示对象并保持逗号。遍历测试数组只会返回最后一个对象,如果我尝试通过另一个数组或变量来检索对象,我会再次回到同一条船上吗?
我在这里想念什么?
编辑:这是确切的测试规格。
答案 0 :(得分:4)
您需要一个对象作为目标。
let test = {};
// later inside of the inner loop
test[word[j]] = { start: [row, firstLetter], end: [row, lastLetter] };
答案 1 :(得分:0)
您可以使用以下字符串形式获取数组的内容:JSON.stringify(array)
,然后去掉左括号和右括号。 Array.toString()
不起作用,因为这样不会打印出嵌套的对象,因此您需要JSON.stringify
。
但是,如果您不确定开头和结尾的括号是第一个字符,并且不想使用正则表达式,则可能会变得混乱。
您可以使用reduce函数来执行此操作,该函数会将数组中的项目累加为一个字符串,不带括号:
const result = array.reduce((acc,crnt) => {
return acc ? acc = `${acc},${JSON.stringify(crnt)}` : `${JSON.stringify(crnt)}`
},'');