我在这次挑战中使用了这个非常棒的sharedStart函数 - https://stackoverflow.com/a/1917041/1828637
function sharedStart(array){
var A= array.concat().sort(),
a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;
while(i<L && a1.charAt(i)=== a2.charAt(i)) i++;
return a1.substring(0, i);
}
然而,这是通过角色来做的。
以下示例返回Noitidart Sab
:
sharedStart(['Noitidart Sab', 'Noitidart Saber']) //=> 'Noitidart Sab'
sharedStart(['Noitidart Sab', 'Noit']) //=> 'Noit'
sharedStart(['Noitidart Sab', 'Noitidart Saber', 'Noit']) //=> 'Noit'
sharedStart(['Noit Sab bye', 'Noit Sab hi there']) //=> 'Noit Sab '
但是我想用言语来做。所以我应该得到这些结果:
sharedStartWords(['Noitidart Sab', 'Noitidart Saber']) //=> 'Noitidart'
sharedStartWords(['Noitidart Sab', 'Noit']) //=> '' // for no match
sharedStartWords(['Noitidart Sab', 'Noitidart Saber', 'Noit']) //=> '' // no match
sharedStartWords(['Noit Sab bye', 'Noit Sab hi there']) //=> 'Noit Sab'
我尽我所能,我的解决方案如此令人费解。我知道这不是一个好问题,我应该展示我做了什么,但它是如此糟糕,令人尴尬。
我如何才能提出sharedStartByWord
版本?
答案 0 :(得分:1)
这个怎么样?
sap.ui.getCore().getModel().refresh();
答案 1 :(得分:1)
function sharedStartByWord(arr) {
var A = arr.concat().map(el => el.split(" "));
var B = A.concat();
B.shift();
var words = A[0];
var wordsTORemove = [];
A[0].forEach((el, i) => {
B.forEach(_el => {
if (el !== _el[i])
words.splice(i, 1);
})
})
return words.join("");
}
var x = sharedStartByWord(['Noitidart Sab', 'Noitidart Saber', 'Noitidart Something']);
console.log(x);