共享以字开头(而非字符)

时间:2018-03-06 15:25:13

标签: javascript

我在这次挑战中使用了这个非常棒的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版本?

2 个答案:

答案 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);