嵌套三元数有些麻烦:

简要:

返回值:一个字符串,其格式为以逗号分隔的名称列表,但最后两个名称除外,后两个名称之间应用&分隔。

输入和输出示例:

list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ])
// returns 'Bart, Lisa & Maggie'

list([ {name: 'Bart'}, {name: 'Lisa'} ])
// returns 'Bart & Lisa'

list([ {name: 'Bart'} ])
// returns 'Bart'


我的JS:

var cache = '';
var data = [ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'}];
  for (i = 0 ; i < data.length; i++) {
    var people = data[i];

        cache += people.name +
        (i==((length === 2) || (length === -1 )) ? ' & ' : // (if has two or is before last)
        (i==((length >= 3 ) || (length < 2)) ? ', ' : '') //not:(if has two or is before last) + >= 3 or < 2
        );
  }


三项工作正常,但没有一两个工作

最佳答案

这是我的方法:

function list(arr) {
  return arr.map(function(person) { return person.name; }) // Use only .name
  .join(", ") // Join with ", "
  .replace(/, (?!.*, )/, " & "); // Replace last ", " with " & "
}

关于javascript - 嵌套三元javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35946572/

10-10 09:01