Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取字符串值,javascript_Javascript_Arrays_String - Fatal编程技术网

获取字符串值,javascript

获取字符串值,javascript,javascript,arrays,string,Javascript,Arrays,String,我试图将字符串值作为函数参数传递,但我需要函数中的字符串值 代码如下: 编辑: var array = [{someValue: 5}, {someOtherValue: 10}]; var newArray = []; var obj = {value: "someValue"}; var setValue = function(choosenValue) { for (let i = 0; i < array.length; i++) { newArray.push({

我试图将字符串值作为函数参数传递,但我需要函数中的字符串值

代码如下:

编辑:

var array = [{someValue: 5}, {someOtherValue: 10}];
var newArray = [];
var obj = {value: "someValue"};
var setValue = function(choosenValue) {

for (let i = 0; i < array.length; i++) {
   newArray.push({
   choosenValue: array[i].choosenValue
  });
}

}

setValue(obj.value);
var数组=[{someValue:5},{someOtherValue:10}];
var newArray=[];
var obj={value:“someValue”};
var setValue=函数(选择值){
for(设i=0;i
编辑: 我想要得到的是newArray=[someValue:5];我想从数组中创建一个新数组,该数组的键作为参数传递,chhosenValue也是数组中的值,我想要它的值。它应该是具有相同键但不同值的对象数组

对象的值将发生变化,这取决于我需要在数组中循环选择什么。因为ChooseValue是字符串,所以我可以在数组中正确循环

我尝试了ChooseValue.valueOf(),但它不起作用。还有别的想法吗

我在push()中发现ChooseValue未定义。

如果要使用动态键,必须以“数组”方式声明

newArray[choosenValue] = array[i][choosenValue]
因此,您的代码变成:

for (let i = 0; i < array.length; i++) {
    newArray[choosenValue] = array[i][choosenValue]
}
for(设i=0;i
但是要小心,因为newArray对于您来说是一个数组,但是您希望通过键用对象填充它。所以正确的答案是将newArray设为对象

var result = {}

for (let i = 0; i < array.length; i++) {
   result[choosenValue] = array[i][choosenValue]
}
var result={}
for(设i=0;i
完整示例

var result = [];
var array = [{hello:"hello"}, {world:"world"}, {hello:"hello2"}];
var setValue = function(value) {
    for (let i = 0; i < array.length; i++) {
       if (array[i][value]) 
          result.push(array[i][value]);
    }
}
setValue("hello");
console.log("Result", result);
var结果=[];
var数组=[{hello:“hello”},{world:“world”},{hello:“hello2”}];
var setValue=函数(值){
for(设i=0;i
我不完全确定您希望代码做什么,因此我将在这里做很多假设

让我们从您当前的问题开始:

var array = [{someValue: 5}, {someOtherValue: 10}];
var newArray = [];
var obj = {value: "someValue"};
var setValue = function(choosenValue) {

    for (let i = 0; i < array.length; i++) {
        newArray.push({
            choosenValue: array[i].choosenValue
        });
    }

}

setValue(obj.value);
一个更简单、更符合逻辑的结构应该是

var map = { someValue: 5, someOtherValue: 10 }
然后,您可以使用

map.someValue
或者使用
选择值
变量

map[choosenValue]
不需要函数或循环

但是我们还是看看那个循环。它现在所做的是“对于
数组中的每个条目
,我需要属性
choosenValue
”的值。考虑到存储在
数组
中的对象一个由名为
someValue
的单一属性组成,另一个由名为
someOtherValue
的单一属性组成,当您尝试在任一对象上获取
choosenValue
时,可以保证获得一个
未定义的

如果您想要从一组具有相似属性名称的对象中获取属性值列表,那么您应该具有以下内容:

var array = [{ someValue: 5, someOtherValue: 10 } , 
             { someValue: 6, someOtherValue: 12 }]
var newArray = [];
var setValue = function(choosenValue) {

    for (let i = 0; i < array.length; i++) {
        newArray.push(array[i][choosenValue]);
    }
}
for (let i = 0; i < array.length; i++) {
    var temp = {}
    temp[choosenValue] = array[i][choosenValue]
    newArray.push(temp)
}
这是合适的

编辑

根据您的编辑,您真正想要的是抓取字段、名称和所有内容,并将其放入新对象中。这有点棘手,因为JavaScript(至少ECMAScript 5)不喜欢让您通过另一个字段的值来设置字段的名称。至少在对象构造期间不会。解决方案是首先创建一个空对象,然后通过数组表示法设置一个字段,如下所示:

var obj = {}
obj[fieldname] = "someval"
对于代码,循环应该如下所示:

var array = [{ someValue: 5, someOtherValue: 10 } , 
             { someValue: 6, someOtherValue: 12 }]
var newArray = [];
var setValue = function(choosenValue) {

    for (let i = 0; i < array.length; i++) {
        newArray.push(array[i][choosenValue]);
    }
}
for (let i = 0; i < array.length; i++) {
    var temp = {}
    temp[choosenValue] = array[i][choosenValue]
    newArray.push(temp)
}
for(设i=0;i
不是最优雅的环,但它完成了任务

1-一般来说,如果一个对象只有一个字段,并且您要拉出并传递该字段,那么您可能应该将该字段从其封装类型中拉出并使用它。如果您传入整个对象并打算添加更多对象,则可以将其保存在封装类型中
未来的字段。

代码中的数组是什么?这里是否缺少任何内容您认为数组[i]是什么意思。选择value
表示什么意思?如果要使用参数,只需使用参数即可。请提供更多代码。哪里定义了
array
?将choosenValue作为对象索引传递:
array[i][choosenValue]
array[i]。chosenvalue
未定义,也无法定义,因为
array[i]
中的对象还不是对象,而是
未定义的对象。您不能将属性(
choosenValue
)分配给未定义的对象。您还必须在
array[i]
中初始化对象,例如
如果(!array[i]){array[i]={};)
我应该在哪里执行此操作?在push()之前?我得到的是空数组:(请参阅答案中的完整示例,并告诉我您不理解的内容。@Gordana如果您给出一个预期输出的示例,您将更容易理解您想要的内容。这些志愿者帮助您花费的大部分时间只是试图理解您的需求。我认为您的思路是正确的,但直到OP cl这只是猜测。回答不错。谢谢你的详细解释。这个newArray.push({choosenValue:array[i][choosenValue]});只起作用。我的键的名称正好是“choosenValue”,而不是我从obj“someValue”获得的值。如何修复它?你的编辑有效。:)只是现在我在推送数组中包含值的更多键时遇到问题。例如,我想推送包含值数组[I]的id。在新数组中推送id?我找到了一种方法。谢谢。