Javascript 如果将项目放入数组并进行排序,则确定该项目的潜在索引。

Javascript 如果将项目放入数组并进行排序,则确定该项目的潜在索引。,javascript,arrays,sorting,ecmascript-6,lodash,Javascript,Arrays,Sorting,Ecmascript 6,Lodash,它能比克隆数组、推送项目和排序更快吗 我有一个项目数组,还有一个项目,它不是数组的一部分: let array = [ {name: 'Foo'}, {name: 'Bar'}, {name: 'Quux}, ] let item = {name: 'Baz'} 数组按字母顺序排序: array = _.sortBy(array, 'name') 与vanilla JS相同: function compare ({name: a}, {name: b}) { return

它能比克隆数组、推送项目和排序更快吗

我有一个
项目数组
,还有一个
项目
,它不是数组的一部分:

let array = [
  {name: 'Foo'},
  {name: 'Bar'},
  {name: 'Quux},
]

let item = {name: 'Baz'}
数组按字母顺序排序:

array = _.sortBy(array, 'name')
与vanilla JS相同:

function compare ({name: a}, {name: b}) {
  return (
    a < b ? -1 :
    a > b ?  1 :
             0
  )
}

array.sort(compare)
但这似乎不是最优的

在保持代码简洁易读的同时,有没有一种方法可以有效地做到这一点。没有像(让i;i>array.length;i++){}这样难以理解的东西。洛达斯连锁店是理想的选择

var index=0;
while(compare(array[index],item)>0) index++;
if(index===array.length) index=-1;
在行动中:

let数组=[
{name:'Foo'},
{name:'Bar'},
{name:'quox'},
].排序(比较);
让item={name:'Baz'};
函数比较({name:a},{name:b}){
返回(
ab?1:
0
)
}
var指数=0;
而(比较(数组[index],item)>0)index++;
如果(index==array.length)index=-1;
控制台日志(索引)
在行动中:

let数组=[
{name:'Foo'},
{name:'Bar'},
{name:'quox'},
].排序(比较);
让item={name:'Baz'};
函数比较({name:a},{name:b}){
返回(
ab?1:
0
)
}
var指数=0;
而(比较(数组[index],item)>0)index++;
如果(index==array.length)index=-1;

控制台日志(索引)
假设
数组
已排序,那么我们可以使用来获取索引

var index = _.sortedIndexBy(array, item, 'name');
let数组=[
{name:'Bar'},
{name:'Foo'},
{name:'quox'},
];
让item={name:'Baz'};
var index=uu.sortedIndexBy(数组,项,'name');
控制台日志(索引)

假设
数组
已排序,那么我们可以使用来获取索引

var index = _.sortedIndexBy(array, item, 'name');
let数组=[
{name:'Bar'},
{name:'Foo'},
{name:'quox'},
];
让item={name:'Baz'};
var index=uu.sortedIndexBy(数组,项,'name');
控制台日志(索引)

在添加新元素之前,输入数组是否已排序?然后,您需要做的就是在现有数组上循环,并检查新项何时比当前项“大”,此时您可以打破循环…在添加新元素之前,输入数组是否已排序?然后,您需要做的就是在现有阵列上循环,并检查新项目何时比当前项目“更大”,此时您可以打破循环…很好!这取决于数组已经排序的想法,对吗?如果我使用lodash进行排序而手头没有
比较
,这个条件行得通吗:
array[index].name>item.name
。没有while(数组[index].name比较
,这个条件行得通吗:
array[index].name>item.name
。没有while(数组[index].name