我有两个JavaScript数组:
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
var array3 = ["Vijendra","Singh","Shakya"];
Run Code Online (Sandbox Code Playgroud)
输出数组应该删除重复的单词.
如何在JavaScript中合并两个数组,以便我只按照它们插入原始数组的相同顺序从每个数组中获取唯一项?
似乎没有办法用另一个数组扩展现有的JavaScript数组,即模拟Python的extend
方法.
我想实现以下目标:
>>> a = [1, 2]
[1, 2]
>>> b = [3, 4, 5]
[3, 4, 5]
>>> SOMETHING HERE
>>> a
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我知道有一种a.concat(b)
方法,但它创建了一个新的数组,而不是简单地扩展第一个.我想要一种算法,当a
它明显大于b
(即不复制的算法)时,它可以有效地工作a
.
注意:这不是如何将某些内容附加到数组的副本? - 这里的目标是将一个数组的全部内容添加到另一个数组中,并"就地"执行,即不复制扩展数组的所有元素.
是否有内置的方法将一个列表附加到另一个列表中,如下所示:
var a = [1,2,3];
a.append([4,5]);
// now a is [1,2,3,4,5];
Run Code Online (Sandbox Code Playgroud)
concat()
做类似的事情,但返回结果.我想要一些修改现有列表的东西push()
我正试图在iOS Safari上获得支持的语音合成语音列表.
根据API,我应该能够通过调用以获得一系列声音:
window.speechSynthesis.getVoices();
Run Code Online (Sandbox Code Playgroud)
有时这会给我一些声音列表,有时却没有.请参阅以下jsfiddle:https://jsfiddle.net/sq7xf327/
如果我在iPhone 5(iOS 8.1.3)上打开它,我不会得到一致的结果.有时我会收回所有37个声音,有时我会收到0个声音.如果你继续刷新它偶尔会显示37或0.
我知道在Chrome中你可以添加一个事件监听器
window.speechSynthesis.voiceschanged
Run Code Online (Sandbox Code Playgroud)
事件以了解语音何时加载,但Safari中不支持此事件.
我试过的一个技巧是定期检查:
var timer = setInterval(function () {
window.voices_ = window.speechSynthesis.getVoices();
if (window.voices_.length > 0) {
clearInterval(timer);
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
这也没有给我一致的结果.
知道如何在iOS Safari上可靠且始终如一地获得支持的语音合成语音吗?
我看到这个响应用于扩展一个数组,所以我尝试了:
console.log(['a', 'b'].push.apply(['c', 'd']));
Run Code Online (Sandbox Code Playgroud)
但它打印:
2
Run Code Online (Sandbox Code Playgroud)
不应该打印:
['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
如果不是我做错了什么?
嗨,它接缝像我不能推我的阵列?码:
$scope.arrResult = [];
dpd.timesheets.get( function (result) {
console.log(result);
for (i = 0, n = result.length; i < n; i++) {
var item = result[i];
$scope.arrResult[item.week].push(item);
}
console.log($scope.arrResult);
});
Run Code Online (Sandbox Code Playgroud)
我收到此控制台错误
Uncaught TypeError: Cannot read property 'push' of undefined
Run Code Online (Sandbox Code Playgroud)
如果我设置$scope.arrResult[item.week].push(item); to $scope.arrResult[item.week] = item;
它没有错误但我需要/想要推,但是错了吗?
我有一个阵列.出于测试目的,我输出如下内容:
for (var i=0; i<array1.length; i++){
console.log(i + ':' + array1[i]);
}
0:String1
1:String2
Run Code Online (Sandbox Code Playgroud)
现在我有第二个阵列.我想要做的是将array1的内容推送到array2.
我用这一行做到这一点:
array2.push(array1);
Run Code Online (Sandbox Code Playgroud)
不幸的是,第一个数组的内容只存在于第二个数组的一个索引中.被逗号隔开.
例如,如果我们在操作后使用查看第二个数组的内容,它将是这样的:
for (var i=0; i<array1.length; i++){
console.log(i + ':' + array1[i]);
}
0:Old_string1
1:Old_string2
2:Old_string3
3:Old_string4
4:String1,String2
Run Code Online (Sandbox Code Playgroud)
虽然我想要这样的结果:
4:String1
5:String2
Run Code Online (Sandbox Code Playgroud)